Entityframework 6:如何将自定义类型映射到 SQL 表
Posted
技术标签:
【中文标题】Entityframework 6:如何将自定义类型映射到 SQL 表【英文标题】:Entityframework 6 : How to map custom types to SQL tables 【发布时间】:2020-01-01 19:30:16 【问题描述】:我搜索了有关此主题的主题,但没有一个回答我的问题。
这是我的问题:
我正在使用 EF 6 Base-first。我需要用 SQL 表映射我自己创建的自定义实体。 假设我有一个这样的 SQL 表客户端:
CREATE TABLE CLIENT(
id int primary key,
info1 varchar,
info2 varchar,
info3 varchar,
info4 varchar,
info5 varchar);
和一个 C# 类的客户端
public class Client
private int id get; set;
private string info2 get; set;
private string info5 get; set;
我希望能够像操作自动生成的 EDMX 类一样在 DbContext 中操作此 Client 类。通过这样做,我只会操纵我的应用程序需要的字段。 我的目标是能够像那样使用它
using(var ctxt = new CustomDbContext())
ctxt.Entry(client).State = client.id == 0? EntityState.Added : EntityState.Modified;
context.SaveChanges();
这样我就可以在我的 Client 表中插入/更新条目,而不会破坏我不使用的 info1、info3 和 info4 中的数据。
提前致谢
【问题讨论】:
作为只有私有属性的类?无论如何,如果您不映射其他属性,则可以,即从设计器中的类中删除它们。但是,这只有在未映射的列可以为空时才有可能,否则您将永远无法插入数据。 【参考方案1】:如果我理解得很好,那么我会使用 DbEntityEntry。 我希望这个资源可以帮助您了解它的实际工作原理。
http://kerryritter.com/updating-or-replacing-entities-in-entity-framework-6/
玩得开心
【讨论】:
您好,这可以解决问题,但我决定使用另一种方法:使用此方法进行表拆分:c-sharpcorner.com/UploadFile/ff2f08/…【参考方案2】:所以我认为你应该创建一些继承自 DbContext
的类来设置你的上下文,然后你将像 DbSet<T> MyProperty get;set;
一样在该类上创建一个虚拟属性
所以可能是这样的:
public class YourEntity : DbContext
//Configuration stuff for your entity
...
public virtual DbSet<Client> Clients get;set;
【讨论】:
这是正确的方法。我用了这个c-sharpcorner.com/UploadFile/ff2f08/…。谢谢以上是关于Entityframework 6:如何将自定义类型映射到 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章
在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?
Django Allauth - 如何将自定义 CSS 类添加到字段?