【问题标题】:mapping to multiple tables and adding validation映射到多个表并添加验证
【发布时间】: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


    【解决方案1】:

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

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

    如果在较新版本的 Entity Framework 中有其他方法可以做到这一点,请告诉我。我只是不想让这个问题悬而未决,以防其他人偶然发现它。

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 2014-08-12
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2020-12-13
      • 2010-11-03
      • 1970-01-01
      • 2017-05-24
      相关资源
      最近更新 更多