私はこれらのような2つの関連するクラスを持っています:
public partial class WorkItem
{
public WorkItem()
{
this.ChildWorkItems = new HashSet<WorkItem>();
this.Attachments = new HashSet<Attachment>();
}
public int Id { get; set; }
public Nullable<int> ParentId { get; set; }
public string Title { get; set; }
public string SenderUserName { get; set; }
public virtual ICollection<WorkItem> ChildWorkItems { get; set; }
public virtual WorkItem ParentWorkItem { get; set; }
public virtual ICollection<Attachment> Attachments { get; set; }
}
および realted 1-n 添付ファイル:
public partial class Attachment
{
public int Id { get; set; }
public string Filename { get; set; }
public Nullable<int> WorkItemId { get; set; }
public virtual WorkItem WorkItem { get; set; }
}
ここで、添付ファイル付きの新しいものをデータベースに挿入したいと思いworkitems
ます。挿入には次のコードを使用します。
最初にすべてのワークアイテムを置きます (添付ファイルに関係なく)
var workItems = new List<WorkItem>();
foreach (var username in AllUsers)
{
var workitem = new WorkItem();
//fill the simple fields
lst.Add(workitem);
Context.WorkItems.Add(workitem);
}
次に、添付ファイルを設定します。
foreach (var fileName in MYFILES)
{
var file = new System.IO.FileInfo(fileName);
foreach (var workItem in workItems)
{
var att =
new Attachment()
{
Filename = file.Name,
};
context.Attachments.Add(att);
att.WorkItem = workItem;
}
}
しかし、次の例外が発生します。
多重度の制約に違反しています。関係「AienCRMModel.FK_WorkItemAttachments_WorkItems」のロール「WorkItem」の多重度は 1 または 0..1 です。
興味深い点は、 One しかない場合workitem
、すべて問題ないことです。WorkItem
添付ファイルのないものが複数ある場合でも、すべて問題ありません。この問題は、少なくとも 1 つの添付ファイルを持つ複数の WorkItem がある場合に発生します。
他の投稿をたくさん読みましたが、有用なものは何も見つかりませんでした。
注 : EDMX ファイルからクラスを生成する T4 テンプレートで EF Code-First 4.3 を使用します。
事前にご協力いただき、誠にありがとうございます。
編集 私は言及されたテーブルの完全なEDMX図をここに添付しました:
編集2
ここで .edmx ファイルを完成させます: http://www.4shared.com/file/zQUO_qk7/CrmModel141.html?