私はVisual Studio 2008、C#、LINQ to SQLを使用しており、datbase dbml GUIエディタを使用してデータベースを作成しています。私は1対多の関係を作成したいが、私の場合、1つのオブジェクトには2つの主キーがある。 GUIのedtiorを使用して、私は関連付けを作成したが、プログラムが実行され、データベースが作成されたとき、私はエラーを取得:複数の外部キーとのLinq-To-SQLの関連付け問題
「参照先テーブルがプライマリまたは候補キーを持っている必要があります[FK名= Screen_Pixel]を。」を
DBMLで作成されたXMLは次のようになります。C#コードで生成された団体である
<Table Name="Screen">
<Column Name="PKA1" Type="System.Int64" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKA2" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Association Name="Screen_Pixel" Member="Pixels" ThisKey="PKA1,PKA2" OtherKey="PKB1,PKB2" Type="Pixel" />
</Table>
<Table Name="Pixel>
<Column Name="PKB1" Type="System.Int64" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKB2" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Column Name="PKB3" Type="System.Int32" IsPrimaryKey="true" CanBeNull="false" UpdateCheck="Never" />
<Association Name="Screen_Pixel" Member="Screen" ThisKey="PKB1,PKB2" OtherKey="PKA1,PKA2" Type="Screen" IsForeignKey="true" />
</Table>
:
[Association([email protected]"Screen_Pixel", [email protected]"_Screen", [email protected]"PKA1,PKA2", [email protected]"PKB1,PKB2", IsForeignKey=true)]
[Association([email protected]"Screen_Pixel", [email protected]"_Pixels", [email protected]"PKB1,PKB2", [email protected]"PKA1,PKA2")]
アイデア?
私はデータベースの元の著者ではなく、これがデータベースの作成方法です。複数の外部キーにオブジェクトを定義させる方が簡単で直感的であるため、これを行わないことを望んでいました。私が月曜日までにそれ以上の返信を聞いていないなら、私はそれを打つだろう。 – John
両方の値が不変で、行の一意性を定義するときに複合主キーを使用するのは悪い考えではありません。 ORMソリューションが複合主キーを処理できない場合、ORMソリューションの欠点です。 ORMの制約に合わせてデータをモデリングするべきではありません。 –