【发布时间】: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