EntityFrameWork 时,已经存在数据库,通过配置实体映射到数据库,但是只有实体属性完全和数据库字段对应时没问题,如果实体属性多于数据库字段,就会报超出部分的猎命无效,可是我配置映射时,只配了数据库有的字段额,其余的没配啊,该怎么不去检查实体和数据库字段是否一致呢?
可以“忽略”这些实体属性,比如
modelBuilder.Entity<A>().Ignore(a => a.MyProperty);
嗯,非常感谢额,终于解决问题了。 不过还有个疑问请教下,我看以前的一个项目,没有这个设置,可以在实体类中 任意加字段,运行时也不会报错(自己可以随意加,没有Ignore这个歌属性),不知道为什么。。
@ToBeStrong: 那个项目也用了EF吗?
@dudu: 嗯,对的。。通过映射实体和数据库,通过ef来操作的。
@ToBeStrong: 可能那个项目只select了指定的字段
@dudu: 这个倒不是,因为后又加的那些字段都是必须的,有没有其他方式来 指定只映射指定的字段呢?(项目中是 指定属性——列, 然后把映射的对象加入 modelBuilder中)。
@ToBeStrong: 之前那个项目用的是Entity Framework Code First吗?
@dudu: 应该是Code only吧,数据库还是要自己去 创建 和添加字段的。
@ToBeStrong:
试试MapSingleType(),示例代码:
builder.Entity<Customer>() .HasKey(c => c.ID) .MapSingleType(c => new { cid = c.ID, nme = c.Name } ) .ToTable(“dbo.custs”);