C# 实体框架6在引用的类上添加数据注释
只是想知道是否可以将数据注释添加到从没有EntityFramework引用的类库中引用的类中 例如C# 实体框架6在引用的类上添加数据注释,c#,entity-framework,data-annotations,C#,Entity Framework,Data Annotations,只是想知道是否可以将数据注释添加到从没有EntityFramework引用的类库中引用的类中 例如Project.Data.Entitieslibrary public class User { public long Id { get; set; } public string UserName { get; set; } } Project.Data.Repositories.EntityFrameworkreferencesProject.Data.Entitieslib
Project.Data.Entities
library
public class User {
public long Id { get; set; }
public string UserName { get; set; }
}
Project.Data.Repositories.EntityFramework
referencesProject.Data.Entities
library。如何添加有关键属性、列名、表名等的数据注释?有用于此目的的fluent API
编辑
关于映射,您必须在模型创建时重写
public class TestContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.ToTable("user")
.HasKey(_ => _.Id);
modelBuilder.Entity<User>()
.Property(_ => _.Id).HasColumnName("id");
modelBuilder.Entity<User>()
.Property(_ => _.UserName).HasColumnName("username"); // Add also HasMaxLength here
}
}
公共类TestContext:DbContext
{
公共数据库集用户{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.ToTable(“用户”)
.HasKey(=>.Id);
modelBuilder.Entity()
.Property(=>.Id).HasColumnName(“Id”);
modelBuilder.Entity()
.Property(=>979;.UserName).HasColumnName(“用户名”);//在此处添加HasMaxLength
}
}
(如果您的数据库已经存在,并且不是由EF在您的模型上创建的,则还需要禁用迁移)
编辑
如果使用CI代码页安装SQL Server,则列名大小写并不重要。因此,只需指定HasMaxLength[Table(“user”)]公共类用户{[Key][Column(“id”)]公共长id{get;set;}[Column(“username”)]公共字符串用户名{get;set;}如果我知道我的实体只需要映射到现有的数据库模式,那么如何使用fluent API实现这一点呢?好的,但我觉得为每个实体设置这一点有点过分了。我们还没有谈到外键呢!数据注释看起来更简洁明了……难道绝对没有办法使用它们吗?数据注释没有办法(或者更好,您可以用与fluent API相同的方式添加属性,因此fluent API更好)。关于fluent API,有许多不同的事情是你不能用数据注释来做的(大多数是在关系上),所以有时候你不得不使用它们。只是要注意,使用其他人的类来处理你的实体可能会让你陷入一些复杂的情况。小心使用。实体库由我设计。我将它们放在不同的库中,只是为了遵循设计最佳实践,如关注点分离和代码的可重用性。