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 表的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义订单状态添加到 shopware 6

如何将自定义类保存/序列化到设置文件?

在 ExtJS 中,如何将自定义 CSS 类添加到数据网格行?

Django Allauth - 如何将自定义 CSS 类添加到字段?

如何将自定义视图拖动为 Xcode 6 中自定义视图的私有属性

如何将自定义方法添加到 Lumen 的响应类