2017-01-26 6 views
0

Мне нужна помощь в отношении Entity Framework. У меня есть класс, который имеет виртуальный supplier свойствоДобавление в контекст в Entity Framework

public class Invoices 
{ 
    public string InvoiceNumber { get; set; } 
    public string Department { get; set; } 
    public int SupplierId{ get; set; } 

    [ForeignKey("SupplierId")] 
    public virtual Supplier SupplierDetails { get; set; } 
} 

Вот структура supplier класса

public class Supplier 
{ 
    [Key, Column("SupplierId")] 
    public int Id { get; set; } 
    public bool IsDeleted { get; set; } 
    public string Name { get; set; } 
    [Required] 
    public string Address { get; set; } 
    public string ContactNumber { get; set; } 

    [Required] 
    [EmailAddress] 
    public string EmailAdd { get; set; } 
} 

Мой вопрос: как я могу добавить счет в мой контекст без добавления поставщика существует моя база данных?

Вот мой код для добавления

public ActionResult AddInvoice(Invoices inv) 
{ 
    context.invoices.add(inv); 
    return View(); 
} 

Любая помощь будет оценена - надеюсь кто-то может мне помочь. Спасибо

+1

И в чем проблема? Единственная проблема, которую я вижу, будет отсутствовать. Context.SaveChanges() ' – Mats391

+2

' SupplierId' не имеет значения NULL. Поэтому вам нужно установить «Поставщик». См. [Этот аналогичный вопрос] (http://stackoverflow.com/questions/41826138/insert-first-set-of-data-to-ef-code-first-using-repository-pattern/41826550#41826550) – smoksnes

+0

, но i необходимо также добавить данные, если они не существуют в каталоге поставщика – Neil

ответ

1

Задайте свойство SupplierId нулевым типом int (int?). Это позволит вставлять счета-фактуры без связанного поставщика.

+0

, но мне также нужно добавить данные, если они не существуют в моем каталоге поставщика – Neil

0

К этому моменту ive удается добавить небольшой код для достижения определенного навыка.

смотрите ниже код

public ActionResult AddNewAsset(AssetHeaderDetails entity) 
    { 
     if (IsExist<Supplier>(entity.SupplierDetails)) 
     { 
      entity.SupplierId = entity.SupplierDetails.Id; 
      entity.SupplierDetails = null; 
     } 
     AddDataToContext(entity); 
     AddToLookUp("AssetItemDesc", entity.Description,  entity.Description); 
     if(entity.AssetItemDetails != null) 
     { 
      foreach (var item in entity.AssetItemDetails) 
      { 
       AddToLookUp("AssetItemDetail", item.ItemDescription, item.ItemType); 
      } 
     } 
     return RedirectToAction("AddNewAsset"); 
    } 

свою внешность, как тусклый, но он может управлять bit..thanks всем, кто комментирует

лучше код? пожалуйста, прокомментируйте здесь, и я попытаюсь изменить код. БОЛЬШИЕ СПАСИБО.: D

Смежные вопросы