dB로 다른 개체를 삽입 : 제품, 항목 (하나 개의 제품으로 구성없이 고객이 구입 한 제품의.) 아래와 같이 요인 :가 하나의 엔티티를 추가하려고하지만, 또한 내가 세 기관이
public class Factor
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int FactorId { get; set; }
[Required]
public virtual System.Guid TrackingCode { set; get; }
[StringLength(1000)]
public string StatusOfFactor { set; get; }
[Required, DataType(DataType.EmailAddress), StringLength(200)]
public string EmailOfFactor { set; get; }
// price before discount
public virtual double PriceOfFactor { set; get; }
public virtual double DiscountOfFactor { set; get; }
[StringLength(3000,MinimumLength =0)]
public virtual string GeneralDescription { set; get; }
public virtual List<Item> Items { set; get; }
}
public class Item
{
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ItemId { set; get; }
public int Count { set; get; }
// 1 -> 1 relationship between product and Item
public virtual Product Product { set; get; }
// * -> * relationship between Item and Factor
public virtual List<Factor> Factors { set; get; }
}
public class Product
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int ProductId { set; get; }
[Required]
[StringLength(128)]
public virtual string NameFa { set; get; }
[Required]
[Range(0, 990000000)]
public virtual double Price { set; get; }
// many->many relationship category and product
public virtual List<Category> Categories { set; get; }
//public virtual List<Factor> Factors { get; set; }
public virtual Item Item { set; get; }
}
엔티티 사이의 관계는 다음과 같습니다 : 1 - 제품 품목에서> 1 * -> * 항목 팩터에서
public class ProductConfig:EntityTypeConfiguration<Product>
{
public ProductConfig() {
// one to one relationship between product and item
HasOptional(p => p.Item).WithRequired(i => i.Product);
}
}
및
public class FactorConfig : EntityTypeConfiguration<Factor>
{
public FactorConfig() {
HasMany(p => p.Items)
.WithMany(p => p.Factors)
.Map(c => {
c.ToTable("ItemsFactors");
c.MapLeftKey("FactorID");
c.MapRightKey("ItemID");
});
}
}
DB에 요소를 삽입하면 다른 제품도 제품 테이블에 추가됩니다 !!!
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RegisterFactor([Bind(Include = "FactorId,TrackingCode,RegistrationDate,PaymentSucceed,PaymentIdOfBank,PaymentDate,StatusOfFactor,EmailOfFactor,TranmissionSucceed,TransmissionDate,PriceOfFactor,DiscountOfFactor,GeneralDescription,IsReturned,ReturnedDate,ReturnedDescription")]Factor factor)
{
{
// Session consist of Items and Items consist of Products
List<Item> purchasedItems =
(List<Item>)Session[Constants.SHOPPINGBAG];
double totalPriceBeforeDiscount = 0.0d;
double totalDiscount = 0.0d;
double totalPriceAfterDiscount = 0.0;
//
Guid trackingCode = Guid.NewGuid();
factor.Items = new List<Item>();
if (purchasedItems == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
foreach (Item item in purchasedItems)
{
if (item.Product != null)
{
factor.Items.Add(item);
}
}
// allocate data to factor
factor.PriceOfFactor = totalPriceBeforeDiscount;
factor.DiscountOfFactor = totalDiscount;
factor.PaymentDate = DateTime.Now;
factor.RegistrationDate = DateTime.Now;
factor.TrackingCode = trackingCode;
if (ModelState.IsValid)
{
//db.Factors.AsNoTracking();
db.Products.AsNoTracking();
db.Factors.Add(factor);
db.SaveChanges();
EmptyShoppingCart();
return View("RegisterFactorSucceed", factor);
}
return View(factor);
}
}
그것은 (나에게) 정말 어색 : 여기에 DB에 요소를 삽입하기위한 코드입니다. 왜 일어 났습니까?
귀하의 회신에 정말로 감사드립니다. 상품 클래스는 상품 클래스에 따라 다릅니다. 즉, 각 품목에는 하나 이상의 제품이 있어야하지만 제품에는 해당되지 않습니다. 제품과 제품 간의 내 관계가 맞습니까? – Xeta7