我有n 个环境,每个环境都由 DbContext(和 EntityFramework)管理。它们都是“相同”的数据库(但可能会出现差异),并且要求提供一种在环境之间复制的方法。
我目前正在通过以下方式解决这个问题。
public class TableA
{
public string FieldA { get; set; }
public string FieldB { get; set; }
public string FieldC { get; set; }
public static void Copy(EnvironmentTypes to, EnvironmentTypes from, int id)
{
var fromModel = TableA.Get(from,id);
TableA.Add(to,fromModel);
}
public static TableA Get(EnvironmentTypes env, int id)
{
switch (env)
{
case EnvironmentTypes.Development
using (var db = new DevelopmentContext.DevelopmentEntities())
{
var entity = db.TableA.Find(id);
return Mapper.Map<TableA>(entity); // using AutoMapper
}
break;
case EnvironmentTypes.SystemTest
using (var db = new SystemTestContext.SystemTestEntities())
{
var entity = db.TableA.Find(id);
return Mapper.Map<TableA>(entity); // using AutoMapper
}
break;
}
}
public static TableA Add(EnvironmentTypes env, TableA fromModel)
{
switch (env)
{
case EnvironmentTypes.Development
using (var db = new DevelopmentContext.DevelopmentEntities())
{
db.TableA.Add(Mapper.Map<DevelopmentContext.TableA>(fromModel));
db.SaveChanges();
return fromModel;
}
break;
case EnvironmentTypes.SystemTest
using (var db = new SystemTestContext.SystemTestEntities())
{
db.TableA.Add(Mapper.Map<SystemTestContext.TableA>(fromModel));
db.SaveChanges();
return fromModel;
}
break;
}
}
}
这导致了很多 1. 代码复制,2. 对象复制(我的 POCO 类中的实体数量已经是 n 倍,现在我需要再次复制该类)。
环境可能存在差异,因此使用 Automapper。
我怎样才能摆脱这种重复的代码并使流程更清晰?