映射到多个表并添加验证

时间:2013-12-27 13:40:04

标签: c# entity-framework ef-code-first entity-framework-6

我正在尝试将现有数据层转换为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对象的属性。当我没有将m.用于所有这些属性,ToTable和HasKey时,它工作正常。我只是错过演员?

1 个答案:

答案 0 :(得分:0)

我认为这是在&#34;不良做法&#34;从最开始。第二个表中的详细信息是由我们无法控制的另一个系统提供的数据,所以说实话,它应该是一个单独的类。

我确实找到了this link,它描述了实现这一目标的两种方法。由于ID不匹配,唯一的选择是使用View。但是,由于我只是在构建一个概念证明,我只是为此创建一个单独的类。

如果在较新版本的Entity Framework中有其他方法可以执行此操作,请告诉我们。我只是不想让这个问题得不到回答,以防其他人偶然发现它。