ایجاد سرویس چندلایهی WCF با Entity Framework در قالب پروژه - 10
نویسنده: حامد قنادی
تاریخ: ۱۳۹۳/۰۴/۲۷ ۲۲:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public bool AddOrUpdateOrDelete<TEntity>(TEntity newItem, bool updateIsNull) where TEntity : class
{
try
{
var dbMyNews = new dbMyNewsEntities();
if (updateIsNull)
dbMyNews.Set<TEntity>().AddOrUpdate(newItem);
else
{
dbMyNews.Set<TEntity>().Attach(newItem);
var entry = dbMyNews.Entry(newItem);
foreach (
var pri in newItem.GetType().GetProperties()
.Where(pri => (pri.GetGetMethod(false).ReturnParameter.ParameterType.IsSerializable &&
pri.GetValue(newItem, null) != null)))
{
entry.Property(pri.Name).IsModified = true;
}
}
dbMyNews.SaveChanges();
return true;
}
catch (Exception)
{
return false;
}
} var news = new tblNews(); news.tblCategoryId = 2; news.tblNewsId = 1; MyNews.EditNews(news);
var news = MyNews.GetNews(1); news.tblCategoryId = 2; MyNews.EditNews(news)
dbMyNews.Entry(news).State = EntityState.Modified;
public int AddNews(tblNews News)
{
dbMyNews.tblNews.Add(News);
dbMyNews.SaveChanges();
return News.tblNewsId;
}
public bool EditNews(tblNews News)
{
try
{
dbMyNews.Entry(News).State = EntityState.Modified;
dbMyNews.SaveChanges();
return true;
}
catch (Exception exp)
{
return false;
}
}
public bool DeleteNews(int tblNewsId)
{
try
{
tblNews News = dbMyNews.tblNews.FirstOrDefault(p => p.tblNewsId == tblNewsId);
News.IsDeleted = true;
dbMyNews.SaveChanges();
return true;
}
catch (Exception exp)
{
return false;
}
} public bool AddOrEditNews(tblNews News)
{
return AddOrUpdateOrDelete(News, News.tblNewsId == 0);
} MyNews.AddOrEditNews (new tblNews { tblNewsId = 1, IsDeleted =true }); خود EF متدی به نام AddOrUpdate داره: http://msdn.microsoft.com/en-us/library/hh846520%28v=vs.103%29.aspx
در اصل تک مسئولیتی، مسئولیت به دلیل تغییر یک کلاس ترجمه میشه. بنابراین در این اصل میگن که یک کلاس باید فقط یک دلیل برای تغییر داشته باشه. برای مثال کلاسی که هم اطلاعات گزارشی رو تهیه میکنه و هم اون رو پرینت میکنه، دو مسئولیت رو به عهده گرفته که میشه از هم جداشون کرد. اما در اینجا یک مسئولیت به روز رسانی اطلاعات یک موجودیت خاص بیشتر در کار نیست. دلیل دومی برای تغییر کلاس نداریم. وابستگی خارجی دومی نداره.