我正在尝试编写一个同步程序。我有一个我对本地数据库的更改的日志表,并希望将它们应用到远程数据库。
对于每个日志条目,我需要在远程数据库中找到相应的记录,因为我知道实体集名称和名为 RowId 的唯一字段的值。RowId 不是主键。
我尝试将以下内容放在我的上下文类中,但这意味着每次添加新域类时我都必须编辑代码。
有没有办法在不使用巨大的 switch 语句的情况下编写程序?我的方法类似于 Entity Framework 的 GetObjectByKey 方法
这是我要替换的巨型 switch 语句
public object GetObjectByRowId(string EntitySetName, Guid RowId)
{
switch ("People")
{
case AppDataEnum.People:
return People.SingleOrDefault(x => x.RowId == RowId);
break;
ETC..
我也许可以通过让所有实体实现一个 IRowId 接口来解决它,但我希望 EF 有一个内置的方式
我认为这里的答案可能会有所帮助。尽管在那种情况下,许多类型都是从同一个表中提取的。在我的场景中,许多表都有 RowId 字段。
Public Class Person : LoggedEntity
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
公共类组织:LoggedEntity { public string FirstName { get; 放; } 公共字符串姓氏 { 获取;放; } }
Public Class LoggedEntity
{ [Key]
public int Id { get; set; }
public Guid RowId { get; set; }
}