针对一个数据库同步两个服务器实例

时间:2019-07-22 06:31:48

标签: c# entity-framework synchronization microservices .net-framework-version

我正在使用C#和.NET框架,并且具有连接到数据库的单片服务器。我正在将服务器上传到AWS并初始化它的两个实例。

问题在于写入数据库。

我正在使用Entity Framework,以下是问题代码:

using (var db = new CordioContext())
{
    Student student = db.Students.Where(s => s.Id == studentId).FirstOrDefault();
    student.coursesCount++;
    db.SaveChanges();
} 

当我只有一个服务器实例时,可以在学生ID上加一个锁,并避免两个线程试图同时更新同一实体。

当我有两个连接到同一数据库的不同实例时该怎么办?

它在微服务架构中是如何完成的?

我已经阅读了一些有关交易的信息,但是我不确定这是否可以解决我的问题。

上面的示例代码仅用于解释问题。在我的代码中,我要更改更多字段并将所有内容都转移到SQL查询而不是EF代码中,这非常丑陋。

谢谢!

1 个答案:

答案 0 :(得分:0)

“同时更新同一实体。”-这种“同时”的情况很少发生,即使这样做,因为您已经在使用实体框架,请使用实体的版本控制。 “更新XXX集(....),其中XXX.version_id = old_version_id + 1; 这将负责并行更新。数据库写操作已序列化。