2016-10-01 6 views
1

я есть 3 классаодин-ноль-одно соотношение эф codefrist

public class StockDef 
{ 
    public int Id { get; set; } 
    public int StockType { get; set; } 
    public virtual OfficeStock SayanStock { get; set; } 
    public virtual AgentStock AgentStock { get; set; } 
    //.... 
} 

public class OfficeStock 
{ 
    public virtual StockDef StockDef { get; set; } 
    //.... 
} 

public class AgentStock 
{ 
    public virtual StockDef StockDef { get; set; } 
    //...... 
} 

каждый объект StockDef определенно есть (один OfficeStock или один AgentStock).
и каждый OfficeStock определенно имеет один StockDef.
и у каждого AgentStock определенно есть один StockDef.
Как я могу реализовать это, в EF Code сначала с помощью свободного API?
Тпй

+0

Вам нужно проверочное ограничение, если вы хотите: один 'officeStock' или один' 'AgentStock' для StockDef' и я думаю, это не возможно с белым Api. но вы можете добавить его вручную. Проверьте это [ссылка] (http://stackoverflow.com/questions/34245449/is-it-possible-to-add-check-constraint-with-fluent-api-in-ef7) – iamnapo

+0

tnx для ответа @iamnapo
I должно быть, как конечная таблица в базе данных? – memo

ответ

0

Вы не можете настроить StockDef (ограничение «только одно свойства может быть скомпилировано») с беглым API, вы должны добавить пользовательскую проверку реализующего интерфейс IValidatableObject.

Вы также можете добавить ограничение (триггер?) В базу данных, чтобы вы могли избежать того, что кто-то другой вставляет неправильные записи.

Кроме того, около 1-1 конфигурации отношений вы можете посмотреть здесь Code First migration when entities have cross references with foreign keys

+0

почему ?? вы говорите, что не возможно, что StockDef может использовать только один OfficeStock или AgentStock? – memo

+0

Наверное, я не понял. У StockDef может быть один OfficeStock и один AgentStock? Я имею в виду, можно ли компилировать 'StockDef.OfficeStock' и' StockDef.AgentStock'? – bubi

+0

У StockDef может быть один OfficeStock или один AgentStock – memo