如何使用实体框架在自动生成的 POCO 实体中设置 ICollection 属性的自定义名称



假设数据库中有两个表:

User 
int UserId 
string Name
Task 
int TaskId 
string Description 
int TaskCreatorId 
int TaskAssigneeId

任务用户之间定义了两个外键TaskCreatorId – UserIdTaskAssigneeId - UserId

我已经有数据库,并使用"数据库优先"方法。使用实体框架中的代码生成,将自动创建两个POCO类:

用户.cs

public int UserId
public string Name
public ICollection<Task> Tasks
public ICollection<Task> Tasks1

任务.cs

public int TaskId
public string Description
public int TaskCreatorId
public int TaskAssigneeId
public User User
public User User1

为了拥有有意义的实体,我必须改变:

public ICollection<Task> Tasks  --> public ICollection<Task> CreatedTasks  
public ICollection<Task> Tasks1 --> public ICollection<Task> AssignedTaska

public User User  --> public User TaskCreator
public User User1 --> public User TaskAssignee

如果我转到Model.edmx并在Model Browser –> Associations中进行更改并设置所需的映射,则在第一次从数据库更新后,它将被覆盖。

怎么做?

你熟悉视图模型吗? 您可以创建以不同方式表示实体的类,以满足您的需求。

因此,您将创建名为viewmodels的新文件夹,创建一个具有适当名称的新类,并在那里添加成员 - TaskCreator,TaskAssignee等。这是一种非常常见的标准设计模式。

您可以只搜索视图模型,或者这里有一些可以帮助您入门的东西......

http://www.markwithall.com/programming/2013/03/01/worlds-simplest-csharp-wpf-mvvm-example.html

在 EDMX 中,关联是属性和数据库列之间的映射。如果更改此映射,则会更改属性链接到的列。您要做的是更改属性名称并保持相同的关联。

相关内容

  • 没有找到相关文章

最新更新