私は最初にコードを実行し、タイプごとのテーブルデザインを使用しています。2番目のオブジェクトを複数のテーブルに拡張すると、次のエラーが発生します。
エンティティまたはアソシエーション間で共有される値は、複数の場所で生成されます。マッピングによって、EntityKeyが複数のストアで生成された列に分割されないことを確認してください。
私のデータベースは次のようになります。
賛成票を投じて、私の写真を追加するために編集していただきありがとうございます。
プロジェクトのPOCOは次のようになります。
public abstract class Project {
public int ProjectID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual ICollection<LocationElement> LocationElements { get; set; }
public abstract string getProjectIdentifier();
}
そして、ロケーション要素の場合:
public enum HowObtainedCodes {
Provided = 1,
Estimated = 2,
Summarized = 3
}
public abstract class LocationElement {
public int LocationElementID { get; set; }
public int ProjectID { get; set; }
public HowObtainedCodes HowObtainedCodeID { get; set; }
}
そしてポイントのために:
[Table("ProvidedPoints")]
public class ProvidedPoint : LocationElement {
public double Lat { get; set; }
public double Long { get; set; }
public string Description { get; set; }
}
プロジェクト(抽象)から科学ライセンスへのリンクは正常に機能し、私のオブジェクトは期待どおりにロード/持続します。さらに、抽象化しない場合は、LocationElementsオブジェクトを追加できます。LocationElementsを拡張し、ProvidedPointオブジェクトを保存しようとすると、上記のメッセージが表示されます。私が最初に考えたのは、ProvidedPointsのLocationElementIDがIdentity列として設定されていることでしたが、そうではありませんでした。
私の質問は、2つのTPTオブジェクトをこのようにリンクしようとして、予期しないことをしているのでしょうか。私は何か他のものが欠けていますか?