Jam*_*123 2 c# entity-framework entity-framework-core .net-core
对于其中一张表,我遇到了以下错误。该表没有主键。如何处理?我正在尝试向表中添加新行。
错误
Unable to track an instance of type 'CommonDataZipInfo' because it does not have a primary key.
Only entity types with primary keys may be tracked.'
Run Code Online (Sandbox Code Playgroud)
数据上下文.cs
modelBuilder.Entity<CommonDataZipInfo>(entity =>
{
entity.HasNoKey();
entity.ToTable("COMMON_DATA_ZIP_INFO");
entity.Property(e => e.AddDate).HasColumnType("datetime");
entity.Property(e => e.ManuscriptNum)
.HasColumnName("manuscript_num")
.HasMaxLength(32)
.IsUnicode(false);
entity.Property(e => e.ZipfileName)
.HasMaxLength(32)
.IsUnicode(false);
});
Run Code Online (Sandbox Code Playgroud)
程序.cs
var CommonDataZipInfo = new CommonDataZipInfo()
{
ManuscriptNum = ManuscriptNum,
ZipfileName = Path.GetFileName(fileName),
AddDate = DateTime.Now
};
context.CommonDataZipInfo.Add(CommonDataZipInfo);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
小智 5
我在这里遇到了同样的问题。这些是我的代码:
[...]
public partial class Radusergroup
{
public string Username { get; set; }
public string Groupname { get; set; }
public int Priority { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
[...]
[...]
modelBuilder.Entity<Radusergroup>(entity =>
{
entity.HasNoKey();
entity.ToTable("radusergroup");
entity.HasIndex(e => e.Username)
.HasName("username");
entity.Property(e => e.Groupname)
.IsRequired()
.HasColumnName("groupname")
.HasMaxLength(64)
.HasDefaultValueSql("''''''");
entity.Property(e => e.Priority)
.HasColumnName("priority")
.HasColumnType("int(11)")
.HasDefaultValueSql("'1'");
entity.Property(e => e.Username)
.IsRequired()
.HasColumnName("username")
.HasMaxLength(64)
.HasDefaultValueSql("''''''");
});
Run Code Online (Sandbox Code Playgroud)
[...]
由于您没有为表创建键,有时由于某种原因您无法更改数据库。就我而言,这是另一个应用程序使用的数据库,所以我不想破坏其他应用程序,所以我的解决方案只是将我的属性“用户名”转换为一个键,如下所示:
public partial class Radusergroup
{
[Key]
public string Username { get; set; }
public string Groupname { get; set; }
public int Priority { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并删除上下文中的 HasNoKey:
[...]
modelBuilder.Entity<Radusergroup>(entity =>
{
//entity.HasNoKey();
entity.ToTable("radusergroup");
entity.HasIndex(e => e.Username)
.HasName("username");
entity.Property(e => e.Groupname)
.IsRequired()
.HasColumnName("groupname")
.HasMaxLength(64)
.HasDefaultValueSql("''''''");
entity.Property(e => e.Priority)
.HasColumnName("priority")
.HasColumnType("int(11)")
.HasDefaultValueSql("'1'");
entity.Property(e => e.Username)
.IsRequired()
.HasColumnName("username")
.HasMaxLength(64)
.HasDefaultValueSql("''''''");
});
Run Code Online (Sandbox Code Playgroud)
[...]
这可能会解决它。
| 归档时间: |
|
| 查看次数: |
5770 次 |
| 最近记录: |