【问题标题】:Entity Framework 6 - using a class with three tables (Db first)Entity Framework 6 - 使用具有三个表的类(Db first)
【发布时间】:2021-02-05 21:57:05
【问题描述】:

我正在使用 Entity Framework 6。

我的数据库中有三个表:

  • 付款
  • Payments_temp
  • Payments_error

Payments 有这些列:

  • 身份证
  • 金额
  • Json

另外两个表具有相同的列,但有一个名为 Result 的列。

我可以创建一个包含所有列的类Payment,然后将我需要的属性映射到数据库中吗?

例子:

public class Payment
{
    public string id {get;set;}
    public decimal amount {get;set;}
    public string json {get;set;}
    public string result {get;set;}
}

DbContext:

Using(var context = new dbcontext())
{
     paym = new Payment();
     context.Payments.add(paym);

     paym.result = "OK";
     context.Payments_temp.add(paym);
     context.Payments_error.add(paym);
}

如果有人知道怎么做,我真的很感激

【问题讨论】:

  • 你是在做代码优先还是数据库优先?
  • 我使用数据库优先
  • 我怀疑它是否会以这种方式工作,因为 DB 首先将生成具有表名的类。所以它会在你的情况下创建 3 个类

标签: c# database entity-framework orm mapping


【解决方案1】:

已解决:使用 json 序列化转换类。

在 DBContext 中

  {
     paym = new Payments();
     context.Payments.add(paym);
     paym.result = "OK";
     var serializedPayments = JsonConvert.SerializeObject(paym);
     context.Payments_temp
             .add(JsonConvert.DeserializeObject<Payments_temp>(paym));
     context.Payments_error
             .add(JsonConvert.DeserializeObject<Payments_error>(paym));
}

【讨论】:

  • paym = new BasePayment();(Payments_temp)paym) 不会抛出 InvalidCastException??
猜你喜欢
  • 2016-08-03
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 2018-04-02
  • 2015-01-21
  • 2014-05-02
  • 2013-11-02
相关资源
最近更新 更多