我的问题
:插入具有自有属性的实体失败。
我有一个
Restaurant
具有
Address
拥有的财产。当我尝试创建一个新实体并插入数据库时,会在
SaveChanges
:
无法在“RestaurantId”列、表“AppRefDB”中插入值NULL。dbo。地址';列不允许空值。插入失败。
我所做的
我的桌子
住址
看起来像这样:
CREATE TABLE [dbo].[Addresses]
(
[RestaurantId] INT NOT NULL,
[Number] NVARCHAR(8) NULL,
[Street] NVARCHAR(150) NOT NULL,
[Zip] NVARCHAR(10) NOT NULL,
[Town] NVARCHAR(50) NOT NULL,
[Site] NVARCHAR(150) NULL ,
CONSTRAINT [PK_Addresses]
PRIMARY KEY ([RestaurantId]),
CONSTRAINT [FK_Address_Restaurants_RestaurantId]
FOREIGN KEY ([RestaurantId]) REFERENCES [Restaurants] ([Id])
ON DELETE CASCADE
)
哪里
RestaurantId
是主键和来自的FK
餐馆
桌子
和
CREATE TABLE [dbo].[Restaurants]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[Name] NVARCHAR(50) NOT NULL,
CONSTRAINT [FK_Restaurants_TCategories]
FOREIGN KEY ([IdCategory]) REFERENCES [Categories]([Id])
)
我是这样定义我的财产的
OnModelCreating
:
modelBuilder.Entity<Restaurant>()
.OwnsOne(p => p.Address)
.ToTable("Addresses");
await _dbContext.Set<Restaurant>()
.AddAsync(restaurant, cancellationToken);
_dbContext.SaveChangesAsync();
我在找什么
为了理解EF,我应该改变什么
餐厅
应该从中获取新创建的Id
餐馆
在插入
住址
?
我使用的是EF Core 3。
更新工作正常,我只是在创建新餐厅/地址时遇到问题
编辑:我的模型
public class Restaurant
{
[Key]
public int Id { get; set; }
[Required, StringLength(50)]
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
[Required, StringLength(150)]
public string Street { get; set; }
[StringLength(8)]
public string Number { get; set; }
[Required, StringLength(10)]
public string Zip { get; set; }
[Required, StringLength(50)]
public string Town { get; set; }
[StringLength(150)]
public string Site { get; set; }
}
编辑2:
我还测试了一个同步版本