C# 如何使用动态linq使插入方法更灵活?

C# 如何使用动态linq使插入方法更灵活?,c#,entity-framework,dynamic-linq,C#,Entity Framework,Dynamic Linq,我想将一些实体写入数据库,但有很多实体我喜欢为它们编写一些通用的东西,现在我知道了: using(var dbContext = new myEntity()) { db.EntityName.AddToObject(newEntity); db.SubmitChanges(); } 我不知道如何将其更改为以下内容:db.AddToObject(“stringName”),我只想编写一些代码,因为我有许多表,所以我的模型中有许多实体 写一个方法并用不同的名字来调用它对我来说是件好事

我想将一些实体写入数据库,但有很多实体我喜欢为它们编写一些通用的东西,现在我知道了:

using(var dbContext = new myEntity())
{
   db.EntityName.AddToObject(newEntity);
   db.SubmitChanges();
}
我不知道如何将其更改为以下内容:db.AddToObject(“stringName”),我只想编写一些代码,因为我有许多表,所以我的模型中有许多实体

写一个方法并用不同的名字来调用它对我来说是件好事。

ScottGu有一个你可以使用的库


一种简单的方法是将insert方法封装到委托中,并将其传递给您的代码,如下所示:

void InsertEntity<TEntity>(TEntity newEntity, Func<myEntity, TEntity> insertCallback) where TEntity : EntityObject
{
    using(var dbContext = new myEntity())
    {
        insertCallback(dbContext, newEntity);
        dbContext.SaveChanges();
    }
}

我已经下载了,但是我无法实现我的目标。你能帮我更多吗?我的意思是告诉我如何实现这一点?对不起,我没有亲自处理过。我只知道它是在这种情况下使用的正确工具。一般来说,如果您的程序架构或需求需要,您应该只在某些“特殊”条件下使用“魔术字符串”;在这方面,你的情况可能不太特殊。你知道我研究过这个问题,但问题是实体的名称实际上主名称不是动态的,它的条件是动态的,它非常有用,但我需要更多的东西,我需要这个和动态实体名称,因为如果你有许多实体,你需要更多的功能。底线:动态linq是关于查询而不是插入的。@Gert:啊,完全正确。我完全错过了。
var client = new Client();
InsertEntity<Client>(client, (dbContext, entity) => dbContext.Client.AddToObject(entity));