1

メイン オブジェクト定義の EntitySet に DB オブジェクトのセットがあります。これは追加と更新をうまく処理しますが、リストからアイテムを削除してもデータベースレコードが削除されないことがわかったので、データリポジトリオブジェクトにレコードを削除するメソッドを作成する必要がありました.使用されているデータコンテキストにアクセスできます。

この削除をメイン オブジェクトに持ち込めるかどうかを調べていたところ、関連付けに DeleteOnNull 属性が見つかりましたが、それを使用すると、「DeleteOnNull は、null 非許容にマップされたシングルトン関連付けメンバーに対してのみ true にすることができます」というエラーが表示されます。外部キー列」。私のコードは次のとおりです。

private EntitySet<UserSite> _userSites = new EntitySet<UserSite>();
[Association(Name = "User_UserSites", Storage = "_userSites", ThisKey = "UserID", OtherKey = "UserID", DeleteOnNull=true)]
public IList<UserSite> UserSites { get { return _userSites; } set { } }

私のユーザーサイトオブジェクトは

[Table(Name="UserSite")]
public class UserSite
{
    [Column]//(IsPrimaryKey = true)]
    public int UserID { get; set; }

    [Column]//(IsPrimaryKey = true)]
    public string Site { get; set; }

    [Column]
    public bool DefaultSite { get; set; }

    [Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert)]
    public int UniqueID { get; set; }
}

すべてのデータ更新メソッドをメイン ユーザー オブジェクト内に保持するために DeleteOnNull を使用できますか? それともリポジトリ レベルで削除を処理する必要がありますか?

4

1 に答える 1

2

DeleteOnNull は、シングルトン アソシエーション専用です。したがって、UserSite.User には配置できますが、User.UserSites には配置できません。ただし、それはあなたが望むほど自動化されていません。ここに例があります。

LINQ to SQL では、構成または集計が必要かどうかを推測できないため、目的の動作を推測するのは困難です。そのため、安全な推測 (集計) が選択されます。

于 2009-09-24T18:12:18.893 に答える