【发布时间】:2017-06-30 15:54:04
【问题描述】:
我制作了一个简单的实体框架 ASP 核心应用程序,但我不知道为什么:
我做了一个这样的上下文:
public class AstootContext : DbContext
{
public AstootContext(DbContextOptions<AstootContext> options)
: base(options)
{ }
public DbSet<Account> Accounts { get; set; }
public DbSet<User> Users { get; set; }
}
我有两张表,模型如下:
public class Account
{
public int Id { get; set; }
public string Username { get; set; }
public string PasswordHash { get; set; }
public DateTime Created { get; set; }
List<User> Users { get; set; }
}
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public DateTime Birthday { get; set; }
public Account Account { get; set; }
}
有趣的是,当我运行我的应用程序时,它实际上可以获取数据。这看起来很奇怪,因为我没有指定任何表映射。 我假设这只是自动映射,因为指定的表名称相同。
我的问题是:
-
如果我不希望我的模型名称与数据库完全相同,如何指定表显式表映射?
-
如何指定自定义列映射。
-
我必须为主键/外键指定什么特别的东西
编辑
澄清
-
假设我在 DB
MyAccounts中有一个表,我想将其映射到实体Accounts。 -
假设我有一个列
password,我希望将其映射到 POCO 属性PasswordHash
【问题讨论】:
-
你有一堆问题,你真的应该只问一个。
-
@DavidG 它们都与特定的映射有关,未来的用户只需要去一个问题就可以找到一个很好的完整答案,如果需要,我会悬赏
-
问题 2 是什么意思,您要命名列吗?
-
我在数据库中的列被命名为密码,但它在模型中被命名为密码哈希,我无法想象实体框架可以自动解决这个问题,我如何将该属性指向列
-
EF 不可能重命名您的密码列,您确定没有代码为您执行此操作吗?您未显示的任何属性或上下文设置?
标签: c# entity-framework asp.net-core entity-framework-core