اگر ازEf استفاده میکنید پشنهاد میکنم از الگوی Unit Of Work استفاده کنید
این الگو میگه که یک دیتاکانتکس آماده رو برای چند تراکنش استفاده کن بجای اینکه برای هر عملی هربار دیتاکانتکست رو وهله سازی کنیم
برای تراکنش های همزمان مثل همین روابط یک به چند مناسب هست
بعدش اینکه روش شما خیلی صحیح و حرفه ای نیست
if (db.tblTransactionIDs.Any(item => item.TransactionID != sanad))
{
نیاز به جستجو زدن در هنگام ثبت رابطه یک به چند نیست
شما مگه از رابطه یک به چند استفاده نمیکنید؟
وقتی موجودیت بدین صورت باشه
جدول گروه کالا
public class ProductGroup
{
public virtual int ProductGroupID { get; set; } )]
public virtual string ProductGroupName { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
وکلاس کالاها
public class Product
{
public virtual int ProductID { get; set; }
[ForeignKey("ProductGroupID")]
public virtual ProductGroup ProductGroup { get; set; }
public virtual int? ProductGroupID { get; set; }
public virtual string ProductName { get; set; }
public virtual string ModelName { get; set; } //نام مدل-برند یک کالا
public virtual decimal UnitPrice { get; set; }
}
برای ثبت سند میتونید ابتدا یک وهله از کلاس ProductGroup بسازید
و داده ها رو اضافه کنید
و یک لیست تعریف و برابر با لیست درون کلاس ProductGroup قرار بدبد و داده های جدول Product رو به این لیست اضافه کنید
وقتی SaveChange بزنید همزمان در دوجدول ذخیره میشه
Public ProductGroup cat{get;set;}
public ICollection<Product> Productlist { get; set; }
void insert()
{
cat=new ProductGroup ();
cat.نام فیلد=مقدار
db.ProductGroups.Add(cat(
cat.Products=Productlist ;
Productlist .Add(اضافه کردن کالا)
db.savechanges();
}