c# - 在实体框架中插入数据
问题描述
我已经被困了半天,想知道我在这里做错了什么。我在此处插入带有员工和 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; }
}
my 是我在数据库中插入新记录的功能。
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
为什么我收到此错误?
解决方案
我认为 - FirstOrDefault() 方法从集合中的第零个索引返回一个元素......所以,您可以将 id 设置为列表表上的主键,这意味着每个记录的值必须是唯一的。尝试插入具有相同 id 的多条记录会导致错误。
推荐阅读
- android - 如何取消 Android 上的 acquireTokenWithDeviceCode 调用?
- azure - Salesforce 与 Spring 微服务的集成
- sql-server - Golang - 如何在 SQL Server PROC 执行中读取多个表
- r - 标记ggplot中的每个第n个数据点
- laravel - 如何使用 codeigniter 3 访问 laravel 会话?
- python - 如何在python中使用selenium循环数组中给出的一组链接
- node.js - 进程以代码 1 退出,未捕获的错误:找不到模块,Autodesk Forge 教程
- ios - 错误:无法构建 gem 原生扩展。并且您没有 /Library/Ruby/Gems/2.6.0 目录的写入权限
- php - TCPDF - 将获取参数传递给 HTML 页面
- python - 有没有办法可以使用动态编程来表示这个循环