0
我是新來WPF,真正以「正確的方式」做事掙扎......這個LINQ保存函數可以接受嗎? (有這樣一個共享的INSERT/UPDATE邏輯?)尋找反饋
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函數的例子,如果我不在正確的道路上?
感謝您的評論......我對此仍然非常陌生,因此希望您能對我的某些問題提供一些幫助: 如果存在違反數據庫規則的情況,您該怎麼做?當我回答我的問題時,我發現了一個問題: http://stackoverflow.com/questions/2300159/wpf-binding-issue-unique-constraint-violation-on-update-how-to-reject-changes 是否有我可以提供給LINQ的設置值,所以如果違反了數據庫規則,我不需要捕獲SqlException並刷新對象的集合......我似乎很愚蠢,我需要編寫代碼來捕獲和處理數據庫規則違反...... – Skyguard 2010-02-23 22:26:12
嘿,我過去所做的是,每個LINQ列都有一個[Column()]定義(類型ColumnAttribute),您可以使用反射來拉下字段並檢查長度,類型,可空性等...如果你不想走這條路,你可以設置你自己的自定義驗證,然後保存並標記這些錯誤的用戶。除此之外,是的,你必須抓住例外。我所做的是僅爲該請求創建一個上下文,嘗試保存,如果發生錯誤,請通知用戶並讓該上下文死亡。 – 2010-02-24 14:06:13
繼續......這樣,當他們再次保存時,您只需重建對象並在您離開的地方工作。畢竟,表單仍然有基礎數據。 – 2010-02-24 14:07:01