【问题标题】:Two same table's mapping LINQ TO SQL两个相同表的映射 LINQ TO SQL
【发布时间】:2017-10-23 20:34:48
【问题描述】:

出于某种原因,我的数据库中有两个表(它们的名称不同),它们完全一样。 而且,他们每个人都有太多的属性。


所以图像我有两个 ORM 模型,比如这个:

[Table(Name = "DataHelper")]
class MySameTable1
{ 
  [Column(IsPrimaryKey = true)]
  public int Id { get; set; }
  [Column]
  public string Name { get; set; }
  [Column]
  public string Surname { get;set; }
  [Column]
  public string Country { get;set; }
  //etc. too much properties
}  

还有第二个

[Table(Name = "DataSource")]
class MySameTable2
{ 
  [Column(IsPrimaryKey = true)]
  public int Id { get; set; }
  [Column]
  public string Name { get; set; }
  [Column]
  public string Surname { get;set; }
  [Column]
  public string Country { get;set; }
  //etc. too much properties
}  

所以当我用桌子做这项工作时:

DataContext _DataContext = new DataContext("connectionstring");

var MySameORM_Model1 = _DataContext.GetTable<MySameTable1>();  

var MySameORM_Model2 = _DataContext.GetTable<MySameTable2>();    

主要问题出现了,当我需要通过表 MySameTable1 中包含的数据填充第二个表(MySameORM_Model2)时(有时不是直接插入,但有时不是)

为了不从 MySameTable1 中获取所有条目,我尝试了以下步骤:

1.包含所有属性的抽象类:

public abstract class BaseSameTable
{
  [Column(IsPrimaryKey = true)]
  public int Id { get; set; }
  [Column]
  public string Name { get; set; }
  [Column]
  public string Surname { get;set; }
  [Column]
  public string Country { get;set; }
  //etc. too much properties
}
//inheritance
[Table(Name = "DataHelper")]
class MySameTable1 : BaseSameTable
{ }  
//same
[Table(Name = "DataSource")]
class MySameTable2 : BaseSameTable
{ }  

它没有用,我在层次结构提交

中遇到了奇怪的异常

在此之后,我将抽象类更改为 interface 抽象,但不幸的是它没有成功。

public interface IBaseEntity
    {
      int Id { get; set; }

      string Name { get; set; }

      string Surname { get;set; }

      string Country { get;set; }
      //etc. too much properties
    }

[Table(Name = "DataHelper")]
class MySameTable1 : IBaseEntity
{ 
  [Column(IsPrimaryKey = true)]
  public int Id { get; set; }
  [Column]
  public string Name { get; set; }
  [Column]
  public string Surname { get;set; }
  [Column]
  public string Country { get;set; }
  //etc. too much properties
}  

[Table(Name = "DataSource")]
class MySameTable2 : IBaseEntity
{ 
  [Column(IsPrimaryKey = true)]
  public int Id { get; set; }
  [Column]
  public string Name { get; set; }
  [Column]
  public string Surname { get;set; }
  [Column]
  public string Country { get;set; }
  //etc. too much properties
}    

那么对于我的案例,什么是正确的方法?我可以做些什么来实现我的目标? 也许它需要额外的映射,但谷歌没有帮助我。

【问题讨论】:

  • 如何从第一个表中填充第二个表? (代码)
  • @GertArnold 没什么特别的。我只是在 REST API 之后过滤,从 JSON 等转换。所以这个映射在两个具有相同属性的不同表上的主要问题。
  • 好吧,也许吧,但是不显示导致问题的代码是没有意义的。

标签: c# .net linq linq-to-sql linq-to-objects


【解决方案1】:

如果您的数据从一张表传输到另一张表,为什么还要让您的主机参与其中?使用存储过程来处理它,因此数据永远不必离开数据服务器。

【讨论】:

  • 感谢您的回复。这并不容易,因为我会修改这个数据,只有在这之后我才会将它插入到第二个同一张表中
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多