Entity не полное сохранение в БД

294
23 октября 2017, 23:15

Использую EF. У меня есть класс

public class Remont
{
    [Key]
    [ForeignKey("KardOf")]
    public int RemontId { get; set; }
    [Display(Name = "Диагностика", Prompt = "Предположительно что сломалось")]
    public List<Detal> Diagnost { get; set; }
    [Required]
    [Display(Name = "Мастер", Prompt = "Кто выполнял ремонт")]
    public Master Master { get; set; }
    public virtual Kard KardOf { get; set; }
}

и второй класс

public class Detal//Деталь
{
    public int DetalId { get; set; }
    [Required]
    [Display(Name = "Деталь", Prompt = "Тип детали")]
    public string Name { get; set; }
    public List<Remont> Remonts { get; set; }
}

Когда выполняю пошаговую отладку, то данные все заполняются в контексте подключения в нужных сущностях (локально). Сохраняю. Но при чтении в другом методе БД, в таблице Remont есть указание на таблицу Kard, но указания в колонке Diagnost и Master имеют значение null. Почему? Что не так я делал и каких не хватает данных для полного добавления сущностей в БД, включая вложенные сущности?

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Diagnostic(string[] detail)
{
    string teh = Request.Form["teh"];
    string kardId = Request.Form["kardId"];
    string master = Request.Form["master"];
    if ((teh != null) & (kardId != null) & (master != null))
    {
        ViewBag.teh = teh;
        ViewBag.kardId = kardId;
        Kard kard = db.Kards.Where(x => x.KardId.ToString() == kardId).FirstOrDefault();
        Master _master = db.Masters.Where(x => x.LastName == master).FirstOrDefault();
        if ((kard != null)&(_master != null))
        {
            Remont rem = new Remont();
            rem.Diagnost = new List<Detal>();
            //kard.Remont.
            foreach (var diag in detail)
            {
                Detal d = db.Detals.Where(x => x.DetalId.ToString() == diag).FirstOrDefault();
                if (d != null)
                {
                    rem.Diagnost.Add(d);
                    if (d.Remonts == null) 
                        d.Remonts = new List<Remont>();
                    d.Remonts.Add(rem);
                 }
            }
            kard.Remont = rem;
            kard.Remont.Master = _master;
            _master.RemontOf = new List<Remont>();
            _master.RemontOf.Add(kard.Remont);
            rem.KardOf = kard;
            db.Remonts.Add(kard.Remont);
            int i=db.SaveChanges();
            return RedirectToAction("Index", "Remont", new { teh = teh});
        }
    }
    return RedirectToAction("Index", "Work");
}
public ActionResult Result()
{
    string teh = Request.QueryString["teh"];
    string kardId = Request.QueryString["kardId"];
    if ((teh != null) & (kardId != null))
    {
        ViewBag.Title = "Результат ремонта";
        ViewBag.teh = teh;
        ViewBag.kardId = kardId;
        Remont result = db.Remonts.Where(x => x.KardOf.KardId.ToString() == kardId).FirstOrDefault();
        ViewBag.master_lastname = result.Master.LastName;

READ ALSO
C# Особенности метода String.Split()

C# Особенности метода String.Split()

Можно ли как-либо сделать так, чтобы метод Split делил строку, когда встречает точку, но игнорировал, например "Mr"? Пример: Строка: "Mr

268
Подскажите что я не так сделал?

Подскажите что я не так сделал?

Method 'BlueprintDataBlockITEM_TYPE

247
Работа с ftp через c#

Работа с ftp через c#

Нужно сделать простенький логин в систему через ftpРеализация примерно такая: Подключение к серверу > Поиск директории из textbox1 (название...

254
WCF: Metadata contains a reference that cannot be resolved: &#39;net.tcp://localhost:8733/&#39;

WCF: Metadata contains a reference that cannot be resolved: 'net.tcp://localhost:8733/'

Просле добавления serviceAuthorization nettcp binding не работает

278