我首先使用实体框架代码,使用流畅的映射API。 我有一张名为“ENTITY'有3列
ENTITY1_ID int
ENTITY2_ID int
LEVEL int
与相关模型
public class ENTITY
{
public virtual ENTITY1 ENTITY1 {get; set;}
public virtual ENTITY2 ENTITY2 {get; set;}
public virtual int LEVEL {get; set;}
}
其中ENTITY1_ID和ENTITY2_ID是两个表的外键。 在映射代码中,我成功地声明了外键,而无需向实体类添加相关属性:
this.HasRequired(t => t.ENTITY1).WithMany().Map(m => m.MapKey("ENTITY1_ID"));
this.HasRequired(t => t.ENTITY2).WithMany().Map(m => m.MapKey("ENTITY2_ID"));
所以我只需要使用列名设置主键。使用类似的东西:
this.HasKey(new {"ENTITY1_ID", "ENTITY2_ID"});
我想这样做是为了避免使用持久性相关属性(ids ..)来污染我的模型。 是否可以在Entity Framework 5上执行此操作?
答案 0 :(得分:-1)
如果这是一个多对多的表,那么你可以单独使用属性创建它(不需要流畅的映射)
public class Entity1
{
public class Id { get; set; }
// Other properties
}
public class Entity2
{
public class Id { get; set; }
// Other properties
}
这是加入表
public class EntityEntity
{
[Key]
[Column(Order = 1)]
public int Entity1Id {get;set;}
[Key]
[Column(Order = 2)]
public int Entity2Id {get;set;}
public int Level {get; set;}
public virtual Entity1 Entity1 {get; set;}
public virtual Entity2 Entity2 {get; set;}
}
这就是你所需要的一切。剩下的“魔法”就是为你完成的。
请记住将这些添加到您的DbContext
public class DataContext : DbContext
{
public DbSet<Entity1> Entity1s {get; set;}
public DbSet<Entity2> Entity2s {get; set;}
public DbSet<EntityEntity> EntityEntities {get; set;}
}