我有一组 DB 对象位于我的主要对象定义的 EntitySet 中。这可以很好地处理添加和更新,但我发现从列表中删除项目不会导致数据库记录被删除,所以我必须在数据存储库对象中创建一个方法来删除记录,因为数据对象没有可以访问正在使用它的数据上下文。
我正在寻找是否可以将此删除带入主对象,并且我找到了关联的 DeleteOnNull 属性,但是当我使用它时,我收到错误“DeleteOnNull 仅适用于映射到不可为空的单例关联成员外键列”。我的代码是:
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 将我的所有数据更新方法保留在我的主用户对象中,还是我必须在存储库级别处理删除?