リストに0個以上のタスクがあり、タスクにリストが関連付けられていなければならない単純な1対多の関係を設定しようとしています。私は単体テストでこの動作を保証したいが、関連がどのようにしなければならないかを理解することができないため、テストは失敗する(後でExpectedExceptionAttributeを使用するが、どの例外がスローされるか分からないまだ)。EntityRefをnullにすることはできません。
タスクが正常に送信することができますが、私はLINQのは、行方不明のリスト参照文句見たい:
[Table]
public class Task
{
[Column(AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsDbGenerated = true)]
public int TaskId { get; set; }
[Column(IsPrimaryKey = true)]
public string Title { get; set; }
[Column]
public string Description { get; set; }
[Column]
public int ListId { get; set; }
private EntityRef<List> _list;
[Association(Storage = "_list", ThisKey = "ListId")]
public List List
{
get { return _list.Entity; }
set { _list.Entity = value; }
}
}
と、この:
[TestMethod]
public void SavingTaskWithoutListFails()
{
var task = new Task() { Title = "Test Task", Description = "This is the task description." };
Db.Tasks.InsertOnSubmit(task);
Db.SubmitChanges();
}
私のクラスと関連は次のようになります。
[Table]
public class List
{
[Column(AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsDbGenerated = true)]
public int ListId { get; set; }
[Column(IsPrimaryKey = true)]
public string Title { get; set; }
private EntitySet<Task> _tasks;
[Association(Storage = "_tasks", OtherKey = "TaskId")]
public EntitySet<Task> Tasks
{
get { return _tasks; }
set
{
if (_tasks == null)
{
_tasks = new EntitySet<Task>();
}
_tasks.Assign(value);
}
}
}
誰でも正しい関連付けやヒントを得ることができます欲しい行動?
タスクのListIdに[列(CanBeNull = false)を設定してもタスクの保存はできませんが、リストの保存はNullReference – MazeT73
さらに変更が必要です。私は答えを編集してコメントを編集しました。 – MarcinJuraszek
ありがとうございます。これは役立ちます。リスト側にはいくつかの問題がありますが、私はそれらを処理できると思います。 – MazeT73