我正在将Excel文件上传到数据库。第一次上传没问题。在第二次上载时正在更新数据库,但出现错误。
这是上传Excel数据的代码:
let transformedFrame = CGRect(origin: scaledOrigin, size: scaledSize).applying(CGAffineTransform(rotationAngle: radians))
ctx.translateBy(x: transformeedFrame.width/2, y: transformedFrame.height/2)
ctx.rotate(by: radians)
fxOrigin.x -= transformedFrame.width/2
fxOrigin.y -= transformedFrame.height/2
MyModel.Context.cs:
public void ImportData(String conString)
{
string query = "Select [Donem],[Marka],[Tuketim] from [Sheet1$]";
OleDbConnection con = new OleDbConnection(conString);
if (con.State == System.Data.ConnectionState.Closed)
{
con.Open();
}
OleDbCommand cmd = new OleDbCommand(query, con);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
da.Dispose();
con.Close();
con.Dispose();
context.Database.ExecuteSqlCommand("TRUNCATE TABLE [CSProjectTable]");
foreach (DataRow dr in ds.Tables[0].Rows)
{
context.CSProjectTables.Add(new CSProjectTable
{
Donem = Convert.ToDouble(dr["Donem"]),
Marka = dr["Marka"].ToString(),
Tuketim = Convert.ToDouble(dr["Tuketim"])
});
}
context.SaveChanges();
}
我的edmx文件和SSDL部分具有public partial class CSProjectDatabaseEntities : DbContext
{
public CSProjectDatabaseEntities ()
: base("name=CSProjectDatabaseEntities ")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<CSProjectTable> CSProjectTables { get; set; }
}
。
StoreGeneratedPattern="Identity"
我收到此错误:
System.InvalidOperationException:'已成功提交对数据库的更改,但是在更新对象上下文时发生错误。 ObjectContext可能处于不一致状态。内部异常消息:由于多个“ DatabaseLayer.CSProjectTable”类型的实体具有相同的主键值,因此保存或接受更改失败。确保显式设置的主键值是唯一的。确保在数据库和实体框架模型中正确配置了数据库生成的主键。将实体设计器用于数据库优先/模型优先配置。使用“ HasDatabaseGeneratedOption”流利的API或“ DatabaseGeneratedAttribute”进行代码优先配置。