出于某种原因,我在我的数据库中有两个表(它们被称为不同的表),两者完全相同。 而且,每个属性都有太多属性。
所以我有两个 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
}
对于我的案例,什么是正确的方法,我可以做些什么来实现我的目标? 也许它需要额外的映射,但谷歌并没有帮助我。
答案 0 :(得分:0)
如果您的数据从一个表转到另一个表,为什么要让您的主机完全参与?使用存储过程来处理它,因此数据永远不会离开数据服务器。