2017-04-07 5 views
1

を作成したとき、列値を割り当てる2014自動行は、私はEF6およびSQL Serverを使用しています

私は、以下の簡略化されたモデルのようなものがあります。

public class Order 
{ 
    public int Id { get; set; } 
    public DateTime Created { get; set; } 
    public IEnumerable<OrderItem> OrderItems { get; set; } 
} 
public class OrderItem 
{ 
    public int Id { get; set; } 
    public int OrderId { get; set; } 
    public Order Order { get; set; } 
    public string ItemName { get; set; } 
    public int OrderItemNumber { get; set; } 
} 

IDプロパティは、標準の自動インクリメントの主キーですが。

OrderItem.OrderItemNumberプロパティーは、指定されたOrderのコンテキスト内でOrderItemを一意に識別します。

新しいOrderItemの行を挿入すると、それは SELECT COALESCE(MAX(OrderItemNumber),0) FROM dbo.OrderItems WHERE OrderId = 2

のようなものがポイントに自動割り当てOrderItemNumberにEF6/SQL Serverを使用しての手段があり、親の注文については、次のOrderItemNumberを割り当てる必要があります行が挿入されていますか?

+0

DatabaseGeneratedOption.Identity? – LONG

+0

私は、これがなぜdupeではないのかを示す質問を編集しました。http://stackoverflow.com/q/5631489/95423 – TonE

+0

[this](http://stackoverflow.com/questions/24162895/entity-framework- 6-and-sql-server-sequences) –

答えて

0

これは、トリガーのEFサポートに関する面白い学習経験を証明しましたが(https://github.com/NickStrupat/EntityFramework.Triggersを参照)、最終的にモデルを変更することになりました。

この場合、私の質問は誤ったモデリングの結果でした。 OrderItemNumberプロパティは重複していたため、削除しました。 OrderItemsが作成されたシーケンスはId値から推論でき、再シーケンシングを可能にする実際の要件はありませんでした。

関連する問題