这是我的代码,但是会有错误如
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)来获得结果出现错误,就是这样的
你可以将代码拆解成多步,然后调试,看看到底问题在哪一步上面。
还有这方法干嘛用的(没看到有注释),实现哪些功能。
为了实现动态修改实体类属性和表的字段的映射,比如我在xml里面写了一个FirstName|Col_FirstName值对,那么我希望读出这个值对,然后传递这两个字符串,修改默认的实体类Person.FirstName和数据库表中FirstName字段的映射,转而使得Person.FirstName和Col_FirstName的映射。
将问题表达清楚,问题就解决了一半。
建议更详细描述你所遇到的问题。
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;"; }
@縱橫四海: 这种用法我没用过,建议换一下思路去解决问题。
@dudu: 好的,谢谢dudu