bie*_*000 3 c# asp.net entity-framework-core asp.net-core
我有以下课程
public class TreeItem
{
public long Id { get; set; }
public Tree Tree { get; set; }
public string Model { get; set; }
public string Version { get; protected set; }
public string Index { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)
并且我想更改属性树的默认数据库的列名称。作为默认实体框架,在databse中寻找“ TreeId”列,但是我们的名字约定说此列应命名为“ tree_id”
如果我尝试将其设置如下:
modelBuilder.Entity<TreeItem>().Property(t => t.Tree).HasColumnName("tree_id");
Run Code Online (Sandbox Code Playgroud)
Ef向我抛出一条异常消息:
由于实体类型“ TreeItem”已配置为导航属性,因此无法为属性“ Tree”调用“属性”。属性只能用于配置标量属性。
是否可以将属性Tree的默认列名称从“ TreeId”更改为“ tree_id”?
尝试使用MapKey():
modelBuilder.Entity<TreeItem>()
.HasRequired(it => it.Tree)
.WithMany()
.Map(m => m.MapKey("tree_id"));
Run Code Online (Sandbox Code Playgroud)
编辑
对于EF Core,您可能必须使用此处所述的解决方法:
modelBuilder.Entity<TreeItem>()
.Property<long>("TreeId")
.HasColumnName("tree_id");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1509 次 |
| 最近记录: |