【发布时间】:2013-12-27 13:40:03
【问题描述】:
我正在尝试将现有数据层转换为 EF,作为我公司使用它开始新项目的概念证明。我遇到了一个类的问题,因为它映射到两个表。我也在尝试使用 Fluent API 来做我可以做的验证,以保持事情更清洁。
我在这里搜索了几次答案,但找不到任何东西。
这是我目前拥有的配置文件。任何关于更好的做事方式的见解也将不胜感激。
internal class StoreConfiguration : EntityTypeConfiguration<Store>{
public StoreConfiguration() {
Map(m => {
m.ToTable("tblStore");
m.HasKey(s => s.ID);
m.Property(s => s.ID).HasColumnName("strID");
m.Property(s => s.SiteID).HasColumnName("strSiteID");
m.Property(s => s.StoreStatusID).HasColumnName("strStatusID");
m.Property(s => s.Number).HasColumnName("strNumber").IsRequired();
m.Property(s => s.Caption).HasColumnName("strCaption").IsRequired().HasMaxLength(80);
m.Property(s => s.Notes).HasColumnName("strNotes");
m.Property(s => s.LandlordName).HasColumnName("strLandlordName").HasMaxLength(80);
m.Property(s => s.IsDeleted).HasColumnName("strIsDeleted");
m.Property(s => s.CreatedBy).HasColumnName("strCreatedBy").HasMaxLength(64);
m.Property(s => s.CreatedOn).HasColumnName("strCreatedOn");
m.Property(s => s.ModifiedBy).HasColumnName("strModifiedBy").HasMaxLength(64);
m.Property(s => s.ModifiedOn).HasColumnName("strModifiedOn");
m.Property(s => s.DeletedBy).HasColumnName("strDeletedBy").HasMaxLength(64);
m.Property(s => s.DeletedOn).HasColumnName("strDeletedOn");
}).Map(m => {
m.ToTable("tblIPLocation");
m.Property(s => s.Number).HasColumnName("LD_STORE#");
m.Property(s => s.District).HasColumnName("LD_DIST#");
m.Property(s => s.DMName).HasColumnName("LD_DMGR");
m.Property(s => s.Region).HasColumnName("LD_REG#");
m.Property(s => s.RMName).HasColumnName("LD_RMGR");
});
}
}
现在,我在所有 .IsRequired()、.HasMaxLength() 和 .HasKey() 上都遇到了错误,因为它们不是 lambda 对象的属性。当我没有对所有这些属性、ToTable 和 HasKey 使用 m. 时,它工作正常。我只是错过了演员表吗?
【问题讨论】:
标签: c# entity-framework ef-code-first entity-framework-6