Wpf 此LINQ保存功能可接受吗?(有这样的共享插入/更新逻辑吗?)寻找反馈
我是WPF的新手,正在为“正确的方式”而挣扎Wpf 此LINQ保存功能可接受吗?(有这样的共享插入/更新逻辑吗?)寻找反馈,wpf,linq,insert,save,Wpf,Linq,Insert,Save,我是WPF的新手,正在为“正确的方式”而挣扎 public void Save(CompanyContact entityToSave) { try { var saveEntity = (from cc in db.CompanyContacts where cc.CompanyContactId == entityToSave.CompanyContactId select cc).SingleOrDefault(); if (sa
public void Save(CompanyContact entityToSave)
{
try
{
var saveEntity = (from cc in db.CompanyContacts
where cc.CompanyContactId == entityToSave.CompanyContactId
select cc).SingleOrDefault();
if (saveEntity == null)
{
//INSERT logic
entityToSave.CreatedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
entityToSave.ModifiedById = entityToSave.CreatedById;
db.CompanyContacts.InsertOnSubmit(entityToSave);
db.CompanyContacts.Context.SubmitChanges();
}
else
{
//UPDATE logic
saveEntity.ModifiedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
saveEntity.CompanyId = entityToSave.Company.CompanyId;
saveEntity.FirstName = entityToSave.FirstName;
saveEntity.LastName = entityToSave.LastName;
saveEntity.CompanyContactTypeId = entityToSave.CompanyContactTypeId;
db.CompanyContacts.Context.SubmitChanges();
}
如果没有,请您提供一些关于为什么没有的意见,或者提供一个更好的方法来编写LINQ函数的例子,如果我没有走上正确的道路???,这会起作用;您还可以将该记录作为变量存储在表单中,如果该记录为null,则该记录不存在,但如果存在,则需要进行更新。这样,您可以最小化查询,只需将表单值分配给一个对象,而不必处理两个对象 或者,如果将LINQ对象绑定到表单,因为它实现了INotifyPropertyChanged,那么如果在表单中设置绑定并将该对象指定为datacontext,则任何更改都会立即绑定到该对象
HTH.谢谢您的评论。。。我对这方面还很陌生,所以希望您能为我解释一些问题:如果违反了数据库规则,您会怎么做?当我回答我在这里发布的问题时,我发现了一个问题:是否有一个设置值可以提供给LINQ,以便在违反数据库规则时不需要捕获SqlException并刷新对象集合。。。我需要编写代码来捕获和处理db规则冲突,这似乎很愚蠢……嘿,我过去所做的是,每个LINQ列都有一个[column()]定义(类型为ColumnAttribute),您可以使用反射来下拉字段并检查长度、类型、空性等。。。如果您不想这样做,可以在保存和标记这些错误的用户之前设置自己的自定义验证。除此之外,是的,您必须捕获异常。我所做的是为该请求单独创建一个上下文,尝试保存,如果出现错误,通知用户并让该上下文消失。继续。。。这样,当它们再次进行保存时,您只需重新构建对象并在停止的位置工作。毕竟,表单仍然有底层数据。