gpt4 book ai didi

c# - 使用 UniqueIdentifier 列类型和 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 作为模型的键在 EF Code First 中不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:25 25 4
gpt4 key购买 nike

这是我的 MVC 模型:

public class Link
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }

[DisplayName("Shorted URL")]
public string SURL { get; set; }

[DisplayName("General Link")]
public string OriginalURL { get; set; }

[DisplayName("Click Count")]
public int ClickCount { get; set; }
}

这是LinkDBContext类:

public class LinkDBContext : DbContext
{
public DbSet<Link> Links { get; set; }
}

当我想使用这段代码向数据库添加一些数据时:

    private string GetNewID(string url, string id)
{
LinkDBContext Links = new LinkDBContext();
//id = "http://" + id;
List<Link> link = Links.Links.Where(a => (a.OriginalURL == id && a.SURL == id)).ToList();
if (link.Count == 0)
{
List<Link> LLinks = Links.Links.ToList<Link>();
Link li = new Link();
//li.ID = new Guid();
li.ClickCount = 0;
li.SURL = id;
li.OriginalURL = url;
Links.Links.Add(li);
Links.SaveChanges();
Links.Dispose();
return id.ToString();
}

return GetNewID(url);
}

我刚得到一个异常:Cannot insert the value NULL into column 'ID', table 'GhiasiDB.dbo.Links'; column does not allow nulls. INSERT fails.The statement has been terminated.

问题是什么,我该如何解决?


更新

我更改了 ID 的类型来自 Guidint当我再次尝试时,我从 List<Link> LLinks = Links.Links.ToList<Link>(); 得到了这个异常的 GetNewID方法:The 'ID' property on 'Link' could not be set to a 'Guid' value. You must set this property to a non-null value of type 'Int32'.我不知道它是从哪里来的。我改变了所有 Guid转至 int !

最佳答案

如果您允许 EF 生成表,它将创建默认值设置为 (newid()) 的 PK。如果您首先设计了数据库,则可以手动设置它。

关于c# - 使用 UniqueIdentifier 列类型和 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 作为模型的键在 EF Code First 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com