两个相同的表映射LINQ TO SQL

时间:2017-05-23 18:29:17

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

出于某种原因,我在我的数据库中有两个表(它们被称为不同的表),两者完全相同。 而且,每个属性都有太多属性。

所以我有两个 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
{ }  

它没有用,我在层次结构提交中遇到了奇怪的例外

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

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
}    

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

1 个答案:

答案 0 :(得分:0)

如果您的数据从一个表转到另一个表,为什么要让您的主机完全参与?使用存储过程来处理它,因此数据永远不会离开数据服务器。