简体   繁体   English

实体框架不会将对象保存到数据库

[英]Entity Framework does not save object to the database

Using entity framework I save two different objects to the database in the same way. 使用实体框架,我以相同的方式将两个不同的对象保存到数据库中。

One object is inserted (it generates the following sql): 插入一个对象(它生成以下sql):

exec sp_executesql N'insert [dbo].[ImportJob]([SourceSystemId], [Start], [Source],   [ImportType], [IsReadCompleted], [IsValidated], [IsImportCompleted])
values (@0, @1, @2, @3, @4, @5, @6)
select [Id]
from [dbo].[ImportJob]
where @@ROWCOUNT > 0 and [Id] = scope_identity()',N'@0 uniqueidentifier,@1  datetime2(7),@2 nvarchar(1000),@3 int,@4 bit,@5 bit,@6 bit',@0='1A908EAE-9438-49A3-9784-C9D84F99D217',@1='2013-08-29 14:46:58.3071350',@2=N'uploads\825d3e08-f795-45dc-aa8f-16e02dec3b29.xlsx',@3=1,@4=0,@5=0,@6=0

The other object is not inserted and it doesn't return an error. 另一个对象未​​插入,并且不返回错误。 The only SQL EF generates for this framework is this: 为此框架生成的唯一SQL EF是:

exec sp_executesql N'declare @generated_keys table([Id] uniqueidentifier)
insert [dbo].[ImportOrganization]([ImportJobId], [Import_ExistingId], [Import_SourceSystemPk], [Import_IsNew], [Import_IsUpdated], [Import_IsRemoved], [SourcePk], [OrganizationTypeText], [Name], [OrganizationTypeId], [MissionStatement], [Address_Street], [Address_Number], [Address_Postcode], [Address_City], [PhoneNumber], [Website], [EmailAddress], [BankAccount], [BankAccountHolder])
output inserted.[Id] into @generated_keys
values (@0, null, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18)
select t.[Id], t.[TimeStamp]
from @generated_keys as g join [dbo].[ImportOrganization] as t on g.[Id] = t.[Id]
where @@ROWCOUNT > 0',N'@0 int,@1 nvarchar(max) ,@2 bit,@3 bit,@4 bit,@5 nvarchar(max) ,@6 nvarchar(100),@7 nvarchar(100),@8 int,@9 nvarchar(1000),@10 nvarchar(100),@11 nvarchar(20),@12 nvarchar(10),@13 nvarchar(100),@14 nvarchar(20),@15 nvarchar(200),@16 nvarchar(200),@17 nvarchar(50),@18 nvarchar(100)',@0=20,@1=N'1',@2=1,@3=0,@4=0,@5=N'1',@6=N'Bla Bla',@7=N'Test bla',@8=1,@9=N'bla bla bla mission',@10=N'Street',@11=N'1',@12=N'30010',@13=N'Blaa',@14=N'0140 123 45 678',@15=N'www.test.org',@16=N'info@test.org',@17=N'123456789',@18=N'Bla Bla'
go

update: the EF code 更新:EF代码

This is from GenericRepository.cs (based on this tutorial ): 这是来自GenericRepository.cs(基于本教程 ):

public virtual void Insert(TEntity entity) {
    dbSet.Add(entity);
}

and the corresponding UnitOfWork.cs: 以及相应的UnitOfWork.cs:

public void Save() {
    context.SaveChanges();
}

the object that fails: 失败的对象:

ImportOrganization item = new ImportOrganization();

item.Name = excelReader.GetString(1);
item.OrganizationTypeText = excelReader.GetString(2);
item.MissionStatement = excelReader.GetString(3);
item.Address = new DAL.Entities.Address
            {
                Street = excelReader.GetString(4),
                Number = excelReader.GetString(5),
                Postcode = excelReader.GetString(6),
                City = excelReader.GetString(7)
            };
item.PhoneNumber = excelReader.GetString(8);
item.Website = excelReader.GetString(9);
item.EmailAddress = excelReader.GetString(10);
item.BankAccount = excelReader.GetString(11);
item.BankAccountHolder = excelReader.GetString(12);
item.Import = new ImportEntity
{
       SourceSystemPk = excelReader.GetString(0)
};
item.ImportJob = _importJob;
item.ImportJobId = _importJob.Id;
item.SourcePk = excelReader.GetString(0);

Calling the insert and save method: 调用insert和save方法:

unitOfWork.ImportOrganizationRepository.Insert(item);
unitOfWork.Save();

Why would EF not create an import query for a new object? EF为什么不为新对象创建导入查询?

The root cause of this problem was PEBKAC . 出现此问题的根本原因是PEBKAC Your humble programmer looked in the wrong database table. 您的谦虚程序员看错了数据库表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM