0

データベースに複雑な関係があります。

Packages (packageID, package_name , .... )
VariantPackage (packageID, variantID)
Variant (variantID, variant_name, .... )
ProductVariant (variantID, productID)
Product (productID, product_name, .... )

(ID フィールドがそれぞれ Primary または Foreign であると仮定できますか?)

エンティティ フレームワークはこれをエレガントに取り上げました。

Package newPackage = new Package()
{
 packageID = Guid.NewGuid()
 etc . . .
};

Variant newVariant = new Variant()
{
 variantID = Guid.NewGuid()
 etc . . .
};

以下の行を実行すると、そのパッケージにバリアントを追加するオプションが表示されます

newPackage.Variant.AddObject(newVariant);
_db.Package.AddObject(newPackage);
_db.SaveChanges();

SaveChanges を実行すると、これらの 2 行で 3 つのテーブルすべてにエントリが作成されますか? モデルを正しく設定したら?

ありがとう

4

2 に答える 2

0

私は今CodeFirst Entity Frameworkを使用しています:

public abstract class DbEntity
{
    [Key, DatabaseGenerated(DatabaseGenerated.Identity)]
    [HiddenInput(DisplayValue = false)]
    public Guid Id { get; set; }
}

public class Package : DbEntity
{
    public string Name { get; set; }
    public List<Variant> Variants { get; set; }
}

public class Variant : DbEntity
{
    public string Name { get; set; }
    public List<Product> Products { get; set; }
}

public class Product : DbEntity
{
    public string Name { get; set; }
}

次に、これが作成されると、適切なテーブルと制約が作成されます。

于 2013-04-25T09:44:33.027 に答える
0

各テーブルには 1 つの挿入メソッドが必要です (テーブルの addobject を呼び出します)。テーブルが関連付けられている挿入メソッドの呼び出しを調整することは非常に重要です。DB にバリアントを挿入するには、次のコードを使用します。

public void InsertVariant(Variant entry)
{
            var t = _db.Variant.CreateObject();
            t.variant_name = entry.variant_name;
// and copy all field ...
// then
            _db.Variant.AddObject(t);
            _db.SaveChanges();
}
于 2012-06-23T10:20:25.147 に答える