Я уже застрял на пол дня, чтобы понять, что я здесь сделал неправильно. Я вставляю новую запись с приложением сотрудника и информацией CHRIS здесь.
Моя модель:
public class tblEmployeeDetail
{
[Key]
public string EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
private string _Bank;
public string Bank
{
get
{
return _Bank;
}
set
{
_Bank = value.ToString().Replace("-", "");
}
}
}
public class tblCHRISEmployee
{
[Key]
public string CHRISID { get; set; }
public string EmployeeID { get; set; }
public string Fullname { get; set; }
private string _Bank;
public string Bank
{
get
{
return _Bank;
}
set
{
_Bank = value.ToString().Replace("-", "");
}
}
}
public class tblWeeklyCredit
{
[Key]
public string WeeklyCreditID { get; set; }
public tblEmployeeDetail Employee { get; set; }
public string Fullname { get; set; }
public string ReportID { get; set; }
public float Amount { get; set; }
public string Description { get; set; }
public DateTime UploadDate { get; set; }
}
Моя функция - вставлять новую запись в базу данных.
public void AddWeeklyCredit(List<tblWeeklyCredit> WeeklyCreditData)
{
using (DatabaseContext db = new DatabaseContext())
{
foreach (tblWeeklyCredit RawData in WeeklyCreditData)
{
if(RawData==null)
throw new Exception(string.Format("{0} null", RawData.ReportID));
//attach the data
db.Entry(db.tblCHRISEmployee.Where(x=>x.CHRISID==RawData.CHRIS.CHRISID).FirstOrDefault()).State = EntityState.Unchanged;
db.Entry(db.tblEmployeeDetail.Where(x => x.EmployeeID == RawData.Employee.EmployeeID).FirstOrDefault()).State = EntityState.Unchanged;
//validate if the report ID is already Claimed
if (db.tblWeeklyCredit.Where(x => x.ReportID == RawData.ReportID).FirstOrDefault() != null)
throw new Exception(string.Format("{0} is already Claimed", RawData.ReportID));
db.tblWeeklyCredit.Add
(
RawData
);
}
db.SaveChanges();
}
}
Я получаю эту ошибку:
Не удалось закрепить ограничение Не удалось выполнить ограничение UNIQUE: tblCHRISEmployee.CHRISID
Почему я получил эту ошибку?