c# - 有没有什么方法可以在 Entity Framework 中的两个实体之间创建关系,而这两个实体在数据库中没有任何关系?

标签 c# entity-framework

这里是生成的模型:

public class DbObjectMap : EntityTypeConfiguration<DbObject>
{
    public DbObjectMap()
    {
        // Primary Key
        HasKey(t => new { t.Type, CompanyName = t.CompanyName, Id = t.Id });

        // Properties
        Property(t => t.Timestamp)
            .IsRequired()
            .IsFixedLength()
            .HasMaxLength(8)
            .IsRowVersion();

        Property(t => t.Type)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(t => t.CompanyName)
            .IsRequired()
            .HasMaxLength(30);

        this.Property(t => t.Id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.Property(t => t.Name)
            .IsRequired()
            .HasMaxLength(30);

        this.Property(t => t.VersionList)
            .IsRequired()
            .HasMaxLength(80);

        this.Property(t => t.LockedBy)
            .IsRequired()
            .HasMaxLength(132);

        // Table & Column Mappings
        this.ToTable("Object");
        this.Property(t => t.Timestamp).HasColumnName("timestamp");
        this.Property(t => t.Type).HasColumnName("Type");
        this.Property(t => t.CompanyName).HasColumnName("Company Name");
        this.Property(t => t.Id).HasColumnName("ID");
        this.Property(t => t.Name).HasColumnName("Name");
        this.Property(t => t.Modified).HasColumnName("Modified");
        this.Property(t => t.Compiled).HasColumnName("Compiled");
        this.Property(t => t.BlobReference).HasColumnName("BLOB Reference");
        this.Property(t => t.BlobSize).HasColumnName("BLOB Size");
        this.Property(t => t.DbmTableNo).HasColumnName("DBM Table No_");
        this.Property(t => t.Date).HasColumnName("Date");
        this.Property(t => t.Time).HasColumnName("Time");
        this.Property(t => t.VersionList).HasColumnName("Version List");
        this.Property(t => t.Locked).HasColumnName("Locked");
        this.Property(t => t.LockedBy).HasColumnName("Locked By");
    }
}

和:

{
    public ObjectTrackingMap()
    {
        // Primary Key
        HasKey(t => new { ObjectType = t.ObjectType, Id = t.Id, ChangeType = t.ChangeType });

        // Properties
        Property(t => t.Timestamp)
            .IsRequired()
            .IsFixedLength()
            .HasMaxLength(8)
            .IsRowVersion();

        Property(t => t.ObjectType)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(t => t.Id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        Property(t => t.ChangeType)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);



        // Table & Column Mappings
        ToTable("Object Tracking");
        Property(t => t.Timestamp).HasColumnName("timestamp");
        Property(t => t.ObjectType).HasColumnName("Object Type");
        Property(t => t.Id).HasColumnName("Object ID");
        Property(t => t.ChangeType).HasColumnName("Change Type");
        Property(t => t.ObjectTimestamp).HasColumnName("Object Timestamp");
    }
}

这两个对象在数据库表中没有任何关系。但他们可以加入 Object.Type = ObjectTracking.ObjectTypeObject.ID = ObjectTracking.ObjectID 字段。

有没有什么方法可以使用 FluentAPI 在 EF 中为这两个实体创建正确的映射?

最佳答案

最简单的方法是使用 Visual Studio - 只需在图形设计器模式下打开您的 EDMX 文件(双击它),激活工具箱和属性窗口(在顶部的 View 菜单中),从工具箱中选择“关联”并拖动绘制您的关系从一个表到另一个表,而不是在属性窗口中调整它。

关于c# - 有没有什么方法可以在 Entity Framework 中的两个实体之间创建关系,而这两个实体在数据库中没有任何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298355/

相关文章:

c# - 使用大量控件填充 FlowLayoutPanel 并按需绘制缩略图

javascript - Ajax Minifier 在缩小时破坏了 javascript

C# 应用程序架构 - EF5 和了解服务层

visual-studio - VS 数据库项目和 Entity Framework 可以一起工作吗?

c# - 使用 Entity Framework 执行自定义sql?

C# HttpWebRequest - 如何在不下载的情况下区分 HTML 和 XML 页面?

c# - 使用反射检查方法是否为 "Extension Method"

java - oracle关闭连接时如何抛出错误?

asp.net-mvc - DAL : EF and Dapper 中的存储库与服务模式

c# - 查询没有分区键和行键的 azure 表