2016-10-01 3 views
1

i possède 3 classun-zéro-un rapport ef 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; } 
    //...... 
} 

chaque objet StockDef ont certainement (une OfficeStock ou une AgentStock).
et chaque OfficeStock a définitivement un StockDef.
et chaque AgentStock a certainement un StockDef.
comment puis-je l'implémenter, dans le code EF d'abord par une API fluide?
tnx

+0

Vous devez VÉRIFIER si vous voulez Constraint: un '' officeStock' ou un AgentStock' pour 'StockDef' et je pense, ce n'est pas possible avec fluence Api. mais vous pouvez l'ajouter manuellement. Cochez cette case [http://stackoverflow.com/questions/34245449/is-it-possible-to-add-check-contraint-with-fluent-api-in-ef7) – iamnapo

+0

tnx pour la réponse @iamnapo
I devrait être comment la table finale dans la base de données? – memo

Répondre

0

Vous ne pouvez pas configurer StockDef (la contrainte "une seule propriété peut être compilée") avec une API fluide, vous devez ajouter une validation personnalisée implémentant l'interface IValidatableObject.

Vous pouvez également ajouter une contrainte (un déclencheur?) Sur la base de données afin d'éviter que quelqu'un d'autre insère des enregistrements erronés.

En outre, environ 1-1 configuration de relation que vous pouvez regarder ici Code First migration when entities have cross references with foreign keys

+0

pourquoi? vous dites que ce n'est pas possible StockDef peut seulement un OfficeStock ou AgentStock? – memo

+0

Probablement je n'ai pas compris. StockDef peut avoir un OfficeStock et un AgentStock? Je veux dire, peut être 'StockDef.OfficeStock' et' StockDef.AgentStock' deux compilés? – bubi

+0

StockDef peut avoir un OfficeStock OU un AgentStock – memo