У меня есть 2 таблицы. Они были созданы в MySQL, затем был применен первый метод базы данных (это означает, что все первичные ключи и свойства навигации были установлены самой Entity Framework при импорте базы данных из MySQL в VS). Эти две таблицы связаны (один ко многим) первичным ключом (Id_Cus). 1-я таблица
namespace WcfRestFullService.Model
{
using System;
using System.Collections.Generic;
public partial class customer
{
public customer()
{
this.dishesrankings = new HashSet<dishesranking>();
this.orders = new HashSet<order>();
}
public int Id_Cus { get; set; }
public string FirstName_Cus { get; set; }
public string LastName_Cus { get; set; }
public int PhoneNum_Cus { get; set; }
public string Email_Cus { get; set; }
public virtual ICollection<dishesranking> dishesrankings { get; set; }
public virtual customerpreference customerpreference { get; set; }
public virtual ICollection<order> orders { get; set; }
}
}
2-я таблица
namespace WcfRestFullService.Model
{
using System;
using System.Collections.Generic;
public partial class customerpreference
{
public int Id_Cus { get; set; }
public int Id_Res { get; set; }
public string Name_Dis { get; set; }
public int Id_Type { get; set; }
public virtual customer customer { get; set; }
public virtual order order { get; set; }
public virtual type_dishes type_dishes { get; set; }
}
}
Здесь я заполняю первую таблицу, все работает правильно и первая таблица заполняется.
public void InsertCustomer(customer customerDataContract)
{
//MySQLEntities Cust = new MySQLEntities();
customer cust = new customer();
{
cust.Id_Cus = Convert.ToInt32(customerDataContract.Id_Cus);
cust.FirstName_Cus = customerDataContract.FirstName_Cus;
cust.LastName_Cus = customerDataContract.LastName_Cus;
cust.PhoneNum_Cus = Convert.ToInt32(customerDataContract.PhoneNum_Cus);
cust.Email_Cus = customerDataContract.Email_Cus;
};
dc.customers.Add(cust);
dc.SaveChanges();
Далее вверх это проблема. Первая таблица заполнена, но никакие значения не помещаются во вторую таблицу в поле Id_Cus. Насколько я понимаю, поскольку таблицы взаимосвязаны, я хочу, чтобы поле Id_Cus во второй таблице также заполнялось, когда это поле заполняется в первой таблице. Я пытался, как показано в коде ниже, но не удалось, не могли бы вы дать некоторые рекомендации?
public void InsertCustomer(customer customerDataContract)
{
//MySQLEntities Cust = new MySQLEntities();
customer cust = new customer();
{
cust.Id_Cus = Convert.ToInt32(customerDataContract.Id_Cus);
cust.FirstName_Cus = customerDataContract.FirstName_Cus;
cust.LastName_Cus = customerDataContract.LastName_Cus;
cust.PhoneNum_Cus = Convert.ToInt32(customerDataContract.PhoneNum_Cus);
cust.Email_Cus = customerDataContract.Email_Cus;
};
dc.customers.Add(cust);
customerpreference custPref = new customerpreference()
{
Id_Cus = customerDataContract.Id_Cus,
Id_Res = 0, // some value
Name_Dis = null, // some value
Id_Type = 0 // some value
};
dc.customerpreferences.Add(custPref);
dc.SaveChanges();
int k = Convert.ToInt32(cust.Id_Cus);
customer custFromDb =(from n in dc.customers
where n.Id_Cus == k
select n).Include(c => c.customerpreference).First();
}