Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到SQL-是否可以使用类似的表进行一般DB调用?_C#_Database_Linq To Sql_Generic Programming - Fatal编程技术网

C# LINQ到SQL-是否可以使用类似的表进行一般DB调用?

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

在我使用LINQ to SQL(非实体框架)的C#应用程序中,我有一个模式,其中有两个不同的数据库表,它们都有一个共同的列--“Language”,它是一个
字符串
,并指定了一种语言,如“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