我有模特。
public class Lessee
{
public long Id { get; set; }
public string LesseeName { get; set; }
public bool? LogicalDeleteIn { get; set; }
}
和另一个具有导航属性的模型。
public class RevenueReceived
{
public long Id { get; set; }
...
public Lessee Lessee { get; set; }
}
然后我填充一个承租人列表并插入,并且效果很好。
public List<Lessee> InsertLessees(List<Lessee> lessees)
{
using (var ctx = new DataContext())
{
ctx.Lessees.AddRange(lessees);
ctx.SaveChanges();
return lessees;
}
}
然后我创建一个RevenueReceived列表并添加相应的承租人。
public List<RevenueReceived> GetRevenueReceived(List<Lessee> lessees)
{
List<RevenueReceived> retval = new List<RevenueReceived>();
using (OleDbConnection con = new OleDbConnection(accessConnectionString))
using (OleDbCommand Command = new OleDbCommand(" SELECT * from tblRevenueReceived", con))
{
con.Open();
OleDbDataReader DB_Reader = Command.ExecuteReader();
while (DB_Reader.Read())
{
string lesseeName = DB_Reader.IsDBNull(DB_Reader.GetOrdinal("Company")) ? null : DB_Reader.GetString(DB_Reader.GetOrdinal("Company"));
retval.Add(new RevenueReceived
{
Id = 0,
...
Lessee = string.IsNullOrEmpty(lesseeName) ? null : lessees.FirstOrDefault(x => x.LesseeName == lesseeName)
});
}
}
return retval;
}
最后,我尝试保存收到的收入列表。
public void InsertRevenuesReceived(List<RevenueReceived> revenuesReceived)
{
using (var ctx = new DataContext())
{
ctx.RevenueReceived.AddRange(revenuesReceived);
ctx.SaveChanges();
}
}
,并且我收到以下错误。我有些困惑,为什么它试图再次插入承租人表。有没有办法只插入主键,却又没有尝试再次插入承租人呢?
Microsoft.EntityFrameworkCore.DbUpdateException HResult = 0x80131500
Message =更新条目时发生错误。见内在 例外。
源= Microsoft.EntityFrameworkCore.Relational StackTrace:位于 Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection 连接) Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(DbContext _,ValueTuple2 parameters) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func
3个操作,Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(IEnumerable
1 commandBatches,IRelationalConnection连接)位于 Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IList1 entries) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IList
1 entryToSave) Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess) Microsoft.EntityFrameworkCore.DbContext.SaveChanges(布尔 acceptAllChangesOnSuccess) Microsoft.EntityFrameworkCore.DbContext.SaveChanges()在 accessdataimport.DataImportService.InsertRevenuesReceived(清单1 收到的收入) C:\ Users \ c-bdelling \ source \ repos \ Minerals \ accessdataimport \ DataImportService.cs:line 100,位于accessdataimport.Program.Main(String [] args)中 C:\ Users \ c-bdelling \ source \ repos \ Minerals \ accessdataimport \ Program.cs:line 29内部异常1:SqlException:无法为以下项插入显式值 当IDENTITY_INSERT设置为OFF时,表“ Lesses”中的标识列。