在没有主键的情况下在表上插入操作

时间:2014-01-24 08:02:20

标签: 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 DeviceInstance { get; set; }
    public virtual Storage Storage { get; set; }
    public virtual User User { get; set; }
}

正如您可以看到其他3个表中的所有键都是外来的。

我知道EntityFramework不喜欢没有主键的表。

但即使我需要问你是否有可能让它工作或我被迫在我的桌子上添加新的列ID?

3 个答案:

答案 0 :(得分:2)

您必须设置主键。您不需要添加额外的Id列,您可以将其中一个属性设置为具有[Key]属性的主键。例如:

[Key]
public int StorageId { get; set; }

答案 1 :(得分:0)

我认为没有主键就无法插入。 只需添加

[Require]
public int DeviceUsageId {get;set}

让它成为,你不必使用这个PK

答案 2 :(得分:0)

看一下这篇关于Entity Framework and Code First Data Annotations的文章,似乎你的答案是

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; }
}