C# 在没有主键的表上插入操作
你好,我在数据库中有一个表,它只包含外键。此表结构如下所示: 代码首先由数据库中的VS生成:C# 在没有主键的表上插入操作,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,你好,我在数据库中有一个表,它只包含外键。此表结构如下所示: 代码首先由数据库中的VS生成: public partial class DeviceUsage { public int StorageId { get; set; } public int UserId { get; set; } public int DeviceInstanceId { get; set; } public virtual DeviceInstance DeviceIn
public partial class DeviceUsage
{
public int StorageId { get; set; }
public int UserId { get; set; }
public int DeviceInstanceId { get; set; }
public virtual DeviceInstance DeviceInstance { get; set; }
public virtual Storage Storage { get; set; }
public virtual User User { get; set; }
}
如您所见,所有键都是来自其他3个表的外来键
我知道EntityFramework不喜欢没有主键的表
但是,即使我需要问您是否有任何可能使其工作,或者我被迫向表中添加新的列Id?您必须设置主键。您不需要添加额外的
Id
列,您可以使用[key]
属性将其中一个属性设置为主键。例如:
[Key]
public int StorageId { get; set; }
您必须设置主键。您不需要添加额外的
Id
列,您可以使用[key]
属性将其中一个属性设置为主键。例如:
[Key]
public int StorageId { get; set; }
您必须设置主键。您不需要添加额外的
Id
列,您可以使用[key]
属性将其中一个属性设置为主键。例如:
[Key]
public int StorageId { get; set; }
您必须设置主键。您不需要添加额外的
Id
列,您可以使用[key]
属性将其中一个属性设置为主键。例如:
[Key]
public int StorageId { get; set; }
我认为没有主键插入是不可能的。 加上
顺其自然,你不必使用这个PK,我认为没有主键插入是不可能的。 加上
顺其自然,你不必使用这个PK,我认为没有主键插入是不可能的。 加上
顺其自然,你不必使用这个PK,我认为没有主键插入是不可能的。 加上
顺其自然,你不必使用这个PK,看看这篇文章,你的答案似乎是
public partial class DeviceUsage
{
[Key]
[Column(Order=1)]
public int StorageId { get; set; }
[Key]
[Column(Order=2)]
public int UserId { get; set; }
[Key]
[Column(Order=3)]
public int DeviceInstanceId { get; set; }
public virtual DeviceInstance DeviceInstance { get; set; }
public virtual Storage Storage { get; set; }
public virtual User User { get; set; }
}
看看这篇文章,你的答案似乎是
public partial class DeviceUsage
{
[Key]
[Column(Order=1)]
public int StorageId { get; set; }
[Key]
[Column(Order=2)]
public int UserId { get; set; }
[Key]
[Column(Order=3)]
public int DeviceInstanceId { get; set; }
public virtual DeviceInstance DeviceInstance { get; set; }
public virtual Storage Storage { get; set; }
public virtual User User { get; set; }
}
看看这篇文章,你的答案似乎是
public partial class DeviceUsage
{
[Key]
[Column(Order=1)]
public int StorageId { get; set; }
[Key]
[Column(Order=2)]
public int UserId { get; set; }
[Key]
[Column(Order=3)]
public int DeviceInstanceId { get; set; }
public virtual DeviceInstance DeviceInstance { get; set; }
public virtual Storage Storage { get; set; }
public virtual User User { get; set; }
}
看看这篇文章,你的答案似乎是
public partial class DeviceUsage
{
[Key]
[Column(Order=1)]
public int StorageId { get; set; }
[Key]
[Column(Order=2)]
public int UserId { get; set; }
[Key]
[Column(Order=3)]
public int DeviceInstanceId { get; set; }
public virtual DeviceInstance DeviceInstance { get; set; }
public virtual Storage Storage { get; set; }
public virtual User User { get; set; }
}
主键也可以是已经存在的列的连接(当然,如果三个值一起是唯一的),所有三个FK都是其列中的主键(具有标识)因此,它们是唯一的。难道你不能将这些值中的三个值作为你在表中的主键,然后使用它们吗?主键也可以是已经存在的列的连接(当然,如果三个值一起是唯一的),所有三个FK都是它们列中的主键(具有标识)因此,它们是唯一的。难道你不能将这些值中的三个值作为你在表中的主键,然后使用它们吗?主键也可以是已经存在的列的连接(当然,如果三个值一起是唯一的),所有三个FK都是它们列中的主键(具有标识)因此,它们是唯一的。难道你不能将这些值中的三个值作为你在表中的主键,然后使用它们吗?主键也可以是已经存在的列的连接(当然,如果三个值一起是唯一的),所有三个FK都是它们列中的主键(具有标识)所以它们是唯一的,难道你不能把这些值中的三个作为你在表上的主键,然后用它来完成吗?它是数据库优先模型,所以你不能在类代码中看到它,但所有的属性都是[必需的]我不确定,但是你可以尝试使用fluent api来定义主键:HasKey(d=>new{d.StorageId,d.UserId,d.DeviceInstanceId});它是数据库优先的模型,所以您无法在类代码中看到它,但所有属性都是[必需的]我不确定,但您可以尝试使用fluent api定义主键:HasKey(d=>new{d.StorageId,d.UserId,d.DeviceInstanceId});它是数据库优先的模型,所以您无法在类代码中看到它,但所有属性都是[必需的]我不确定,但您可以尝试使用fluent api定义主键:HasKey(d=>new{d.StorageId,d.UserId,d.DeviceInstanceId});它是数据库优先的模型,所以您无法在类代码中看到它,但所有属性都是[必需的]我不确定,但您可以尝试使用fluent api定义主键:HasKey(d=>new{d.StorageId,d.UserId,d.DeviceInstanceId});谢谢你的回答,但我忘了提到我使用数据库第一模型,所以我不应该使用数据注释Hanks作为答案,但我忘了提到我使用数据库第一模型,所以我不应该使用数据注释Hanks作为答案,但我忘了提到我使用数据库第一模型,所以我不应该使用数据注释感谢您的回答,但我忘了提到我使用数据库优先模型,所以我不应该使用数据注释