Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6在引用的类上添加数据注释_C#_Entity Framework_Data Annotations - Fatal编程技术网

C# 实体框架6在引用的类上添加数据注释

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

只是想知道是否可以将数据注释添加到从没有EntityFramework引用的类库中引用的类中

例如
Project.Data.Entities
library

public class User {
    public long Id { get; set; }
    public string UserName { get; set; }
}

Project.Data.Repositories.EntityFramework
references
Project.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,有许多不同的事情是你不能用数据注释来做的(大多数是在关系上),所以有时候你不得不使用它们。只是要注意,使用其他人的类来处理你的实体可能会让你陷入一些复杂的情况。小心使用。实体库由我设计。我将它们放在不同的库中,只是为了遵循设计最佳实践,如关注点分离和代码的可重用性。