2013-07-22 4 views
0

Я использую первый код сущности с 5-го уровня с помощью API-интерфейса с плавным отображением. У меня есть таблица с именем вдовьей части наследства «ЛИЦОМ» с 3-мя колонныНастройка Entity Framework Первичный ключ с использованием имен столбцов

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?

ответ

-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;}   
} 
+0

Пожалуйста, прочитайте Точную мой вопрос, я не хочу, чтобы объявить Entity1Id и Entity2Id. – enenkey

Смежные вопросы