juF*_*uFo 8 c# entity-framework multi-user
让我解释一下这个标题.
我在应用程序(TestApp)中使用Entity Framework Code First .出于调试目的,TestApp连接到SQLExpress数据库(中央数据库服务器).
为了简单起见这里,该数据库包含一个表的"产品"和TestApp显示在数据网格数据库中的所有"产品"和TestApp可以添加/删除"产品"或修改的产品名称.
public class Product {
public int ProductId { get; set; }
public string ProductName { get; set; }
}
public DbSet<Product> Products { get; set; }
Run Code Online (Sandbox Code Playgroud)
我有3台PC安装并运行TestApp(我称之为Client_X).如果我通过Client_1添加新的"产品",则不会在Client_2和Client_3上的TestApp中直接显示.仅当Client_2和Client_3再次获取所有数据(手动刷新)时,才会看到新添加的记录.
我想知道的是:如何通过EF Code First了解数据库中的更改?Client_2和Client_3如何自动更新其数据网格,因为添加或删除了新项目?
我不确定它是否被要求太多,但是一个简单的示例项目或简单的代码来证明这将是有用的.
仅供参考:我是EF Code First的新手.(我使用的是.NET 4.0和EF Code First 4.3.1)
提前致谢.
方案:
Client_3<
\
\
\
\
\>
Client_1 <---> [Central Database] <----> Client_2
Run Code Online (Sandbox Code Playgroud)
更新/编辑:
好的,很明显,实体框架本身不会在多个客户端之间进行任何同步.
所以我会问另一个问题: 我正在考虑使用Client-Server方式:
与该单个服务器应用程序通信的多个客户端.
现在什么是确保客户使用相同数据并查看每个人更新/更改的最佳方法?(我希望代码示例.)
您无法使用实体框架通知客户端.您可以为其编写重载SaveChanges或创建扩展方法,但只要您没有客户端 - >服务器架构,我无法想象您如何实现这一目标.
如果您使用WCF作为数据库的网关,则可以在客户端和服务器之间创建双工通信,并且当新记录可用时,将使用回调通道通知客户端.
另一种方法是使用MS SQL Service Broker 概述(Service Broker)
尽管如此,有许多不同的方法可以获得所需的结果,但它们都与实体框架无关,因为它是ORM,也不是应用程序框架或使用.NET构建的应用程序的通信框架.
| 归档时间: |
|
| 查看次数: |
5765 次 |
| 最近记录: |