C# LINQ到SQL-是否可以使用类似的表进行一般DB调用?
在我使用LINQ to SQL(非实体框架)的C#应用程序中,我有一个模式,其中有两个不同的数据库表,它们都有一个共同的列--“Language”,它是一个C# LINQ到SQL-是否可以使用类似的表进行一般DB调用?,c#,database,linq-to-sql,generic-programming,C#,Database,Linq To Sql,Generic Programming,在我使用LINQ to SQL(非实体框架)的C#应用程序中,我有一个模式,其中有两个不同的数据库表,它们都有一个共同的列--“Language”,它是一个字符串,并指定了一种语言,如“English”、“German”等 对于这两个表中的每个英语实体,我必须制作一份完全相同的副本,但“language”的值不同。假设对于这个例子,我有两个表,文章和社论。因此,我有两个非常类似的函数,如下所示: private void CreateArticles() { var englishEnt
字符串
,并指定了一种语言,如“English”、“German”等
对于这两个表中的每个英语实体,我必须制作一份完全相同的副本,但“language”的值不同。假设对于这个例子,我有两个表,文章
和社论
。因此,我有两个非常类似的函数,如下所示:
private void CreateArticles()
{
var englishEntities = DbContext.Articles.ToList();
foreach (var englishEntity in englishEntities)
{
//for each english entity, create a copy of it in all languages
foreach (string lang in LanguageList)
{
var newEntity = englishEntity;
newEntity.Language = lang;
DbContext.Articles.InsertOnSubmit(newEntity);
DbContext.SubmitChanges();
}
}
}
private void CreateEditorials()
{
var englishEntities = DbContext.Editorials.ToList();
foreach (var englishEntity in englishEntities)
{
//for each english entity, create a copy of it in all languages
foreach (string lang in LanguageList)
{
var newEntity = englishEntity;
newEntity.Language = lang;
DbContext.Editorials.InsertOnSubmit(newEntity);
DbContext.SubmitChanges();
}
}
}
如您所见,这两个函数是相同的,除了从中检索并保存到的DB表的
由于我需要分配的唯一内容是语言
,这是两个表之间的一个公共列,有没有办法将这两个函数组合成一个函数?第一步可能是:
private void Create<T>(DbSet<T> entities) where T: ILanguageEntity
{
foreach (var entity in entities)
{
foreach (string lang in LanguageList)
{
var newEntity = entity;
newEntity.Language = lang;
entities.Add(newEntity);
}
}
}
private void Create(DbSet entities),其中T:i语言实体
{
foreach(实体中的var实体)
{
foreach(语言列表中的字符串lang)
{
var newEntity=实体;
newEntity.Language=lang;
实体。添加(新实体);
}
}
}
电话可能看起来像:
public void CallTheMethod {
Create<Articles>(DbContext.Articles);
DbContext.SubmitChanges();
}
public void调用方法{
创建(DbContext.Articles);
DbContext.SubmitChanges();
}
数据库集在哪里?注意:我没有使用实体框架,因此如果这是实体框架的一部分,我认为我无法访问它。DbContext.Editorials属性的类型是什么?Table
那么您应该使用Table而不是DbSet