我必须创建一个方法来对我的所有表执行crud操作。
EntitySave()
EntityUpdate()
EntityGetList()
创建此方法后,我想对该方法中的所有表执行所有操作。 因此,当我必须从客户端保存数据时。我只需要传递表名和参数中的值以将数据保存到该特定表中即可(我想在运行时创建模型)。用技术术语来说,我已经创建了通用的Crud方法来进行插入更新删除,因此只能使用一种方法我可以在不同的表上执行所有这些操作。
public ActionResult method()
{
var Dict = HttpContext.Application["SiteSettings"] as Dictionary<string, Dictionary<string, Dictionary<string, string>>>;
string value = "";
foreach(var key in Dict.Keys)
{
value = key;
}
Assembly Exectuteassembly = Assembly.GetExecutingAssembly();
Type Etity = Exectuteassembly.GetType(value);
object TGalaxyUserInstance = Activator.CreateInstance(Etity);
PropertyInfo[] properties = Etity.GetProperties(
BindingFlags.NonPublic | // Include protected and private properties
BindingFlags.Public | // Also include public properties
BindingFlags.Instance // Specify to retrieve non static properties
);
string[] values = new string[4];
values[0] = "0";
values[1] = "ThisTesting";
values[2] = "Howto";
values[3] = "UseInstance";
for (int i = 0, j = 0; j < properties.Length; j++, i++)
{
if(i==0 && j == 0)
{
properties[i].SetValue(TGalaxyUserInstance, j, null);
}
else
{
properties[i].SetValue(TGalaxyUserInstance,values[j], null);
}
}
using (var _mSession = ApplicationCore.Instance.SessionFactory.OpenSession())
{
using (var transaction = _mSession.BeginTransaction())
{
_mSession.Save(TGalaxyUserInstance);
transaction.Commit();
}
}
return RedirectToAction("List", "Home");
}
答案 0 :(得分:0)
您要应用存储库模式。下面的链接提供了一个可以帮助您的示例。 https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design 通过使用泛型解决了传递表的问题,示例也表明了这一点。