首页 新闻 会员 周边

怎么样通过两个字符串来做到修改表的映射?实体类的字段名和表的字段名

0
悬赏园豆:20 [已解决问题] 解决于 2012-09-13 10:53

这是我的代码,但是会有错误如

 protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {

        Movie mov = new Movie();
        modelBuilder.Entity<Movie>().Property(GetPropert("MovieName")).HasColumnName("Actors");
    }
    public System.Linq.Expressions.Expression<Func<Movie,string>> GetPropert(string  properName)
    {
        
        // Func<Movie, string> dele = 
        System.Linq.Expressions.Expression<Func<Movie, string>> exp = k => (string)(typeof(Movie).GetProperty(properName).GetValue(k, null));
        return exp ;
    }

这个怎么解决?

问题补充:

这个是通过ctp来做的实体类和数据库的映射,重写Dbcontext类的OnModelCreating()方法来改变一些字段的默认映射方式(默认的是表名和字段名相同),这里想通过实体类的属性名称(字符串类型)和字段名(字符串类型)来建立映射.但是

 modelBuilder.Entity<Movie>().Property(p=>p.MovieName).HasColumnName("Actors");其中的红色部分我想用字符串来获得,Property方法的参数类型是一个Express<Func<Movie,string>>的表达式,然后我想通过GetPropert(string ProName)来获得结果出现错误,就是这样的

周念中的主页 周念中 | 初学一级 | 园豆:5
提问于:2012-09-11 18:37
< >
分享
最佳答案
0

你可以将代码拆解成多步,然后调试,看看到底问题在哪一步上面。

还有这方法干嘛用的(没看到有注释),实现哪些功能。

收获园豆:10
仰望繁星的猪 | 小虾三级 |园豆:514 | 2012-09-12 10:47

为了实现动态修改实体类属性和表的字段的映射,比如我在xml里面写了一个FirstName|Col_FirstName值对,那么我希望读出这个值对,然后传递这两个字符串,修改默认的实体类Person.FirstName和数据库表中FirstName字段的映射,转而使得Person.FirstName和Col_FirstName的映射。

周念中 | 园豆:5 (初学一级) | 2012-09-12 13:49
其他回答(1)
0

将问题表达清楚,问题就解决了一半。

建议更详细描述你所遇到的问题。

收获园豆:10
dudu | 园豆:31007 (高人七级) | 2012-09-12 10:32

dudu现在应该好多了,请帮忙看一下,这是Context类的全部代码

public class MovieTotal:DbContext
{
    public DbSet<Movie> Movies { get;set; }
    public DbSet<Person> Persons { get; set;}
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {

        Movie mov = new Movie();
        modelBuilder.Entity<Movie>().Property(GetPropert("MovieName")).HasColumnName("Actors");
    }
    public System.Linq.Expressions.Expression<Func<Movie,string>> GetPropert(string  properName)
    {
        
        // Func<Movie, string> dele = 
        System.Linq.Expressions.Expression<Func<Movie, string>> exp = k => (string)(typeof(Movie).GetProperty(properName).GetValue(k, null));
        return exp ;
    }
public MovieTotal()
    {   
        this.Database.Connection.ConnectionString = @"Data Source=(local);Initial Catalog=MovieTotal6;Integrated Security=SSPI;";
         
    
    }
支持(0) 反对(0) 周念中 | 园豆:5 (初学一级) | 2012-09-12 13:44

@縱橫四海: 这种用法我没用过,建议换一下思路去解决问题。

支持(0) 反对(0) dudu | 园豆:31007 (高人七级) | 2012-09-12 14:15

@dudu: 好的,谢谢dudu

支持(0) 反对(0) 周念中 | 园豆:5 (初学一级) | 2012-09-12 14:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册