sách gpt4 ai đã đi

visual-studio - 使用数据库优先方法选择性地禁用延迟加载

In lại 作者:行者123 更新时间:2023-12-02 02:01:34 25 4
mua khóa gpt4 Nike

我对禁用整个上下文的延迟加载不感兴趣。我只想有选择地禁用一些关键导航属性的延迟加载。

vượt qua Code First 方法,我了解了如何有选择地禁用延迟加载:

public virtual Person Requestor { get; set; } //lazy loading enabled
...
public Person Requestor { get; set; } //lazy loading disabled

然而,使用数据库优先方法,这是从模板生成的代码,因此此修改将在下一次重新生成时丢失。

有没有办法修改模型或模板生成器以选择性地禁用延迟加载?

1 Câu trả lời

我不知道有什么办法。但是,如果您打算使用实体代码生成器,则可以构建警告系统,以便在重新生成代码时立即收到通知(取决于您的构建策略)。

所以我要做的是针对选定的实体,假设实体是 Request 并且有问题的属性是 Requestor 然后编写一个测试来断言该属性是不是虚拟的

            [Phương pháp thử nghiệm()]
public void RequestPropertyRequestor_MustNotBeVirtual() {

PropertyInfo[] properties = typeof(Request).GetProperties()
.Where(p => p.GetGetMethod().IsVirtual).ToArray();
Assert.AreEqual(0, properties.Count(p => p.Name == "Requestor"), "Model Code Regenerated - change the Request Entity");
}

不确定反射代码的准确性,但您明白我的意思。这样,当重新生成实体并且您修改了代码时,测试将失败。预警系统

hoặc

您可以关闭代码生成并使用 POCO。

建议的更改

如果您不想关闭代码生成,那么修改 T4 模板是可行的方法。只是

  • 在 EDMX 设计器的属性中将“代码生成策略”设置为không có,这样默认生成就不会发生。这导致没有派生的 DbContext 或实体类
  • 在 EDMX 设计器中,右键单击绘图表面并选择“添加代码生成项”。那里应该列出了生成器,如果不是通过 NuGet 安装一个的话。选择 EF5 DbContext。
  • 找到用于实体生成和修改的 T4 模板。

关于visual-studio - 使用数据库优先方法选择性地禁用延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001275/

25 4 0
Bài viết được đề xuất: CVS 关键字对我不起作用
Bài viết được đề xuất: Haskell (a -> m a) -> m (a -> a) -> m (a -> a)
Bài viết được đề xuất: regex - RewriteEngine On .htaccess 不工作
Bài viết được đề xuất: selenium-webdriver - Selenium Web 驱动程序--TestNG 报告中未捕获失败屏幕截图
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com