ModelLoadOptions 类

定义

用于从数据源(如 Dacpac 文件)加载模型的选项。

根据方案,这些选项可能非常重要。 例如,使用 CodeAnalysisService 静态代码分析时,强烈建议将 LoadAsScriptBackedModel 此选项设置为 true,因为许多规则需要完全编写脚本的源,并且可能无法按预期在非脚本支持的模型上运行。

public sealed class ModelLoadOptions
type ModelLoadOptions = class
Public NotInheritable Class ModelLoadOptions
继承
ModelLoadOptions

构造函数

名称 说明
ModelLoadOptions()

使用默认选项构造一个实例 ModelLoadOptions ,即使用 Memory 存储并将其设置为 LoadAsScriptBackedModel false。

ModelLoadOptions(DacSchemaModelStorageType, Boolean, Boolean)

构造具有指定选项的 ModelLoadOptions 实例。

ModelLoadOptions(DacSchemaModelStorageType, Boolean)

构造具有指定选项的 ModelLoadOptions 实例。

属性

名称 说明
LoadAsScriptBackedModel

是否应加载模型,以便由脚本表示形式备份对象? 在这种情况下,作用域中的 UserDefined 对象将具有源名称和源位置信息。

从 Dacpac 或任何其他非脚本源加载时,模型将不具有源信息。 这意味着,使用 CodeAnalysisService 某些规则运行静态代码分析可能无法正常工作,并且无法使用 AddOrUpdateObjects(String, String, TSqlObjectOptions) 该方法替换模型中的现有对象,因为没有脚本与其原始定义。 对于将 CodeAnalysisService 此设置设置为 true 的方案,强烈建议使用此设置。 同样,如果要在模型设置中将现有对象更新为 true 可能很有用。

请注意,创建脚本化模型时可能会产生潜在的重大性能成本。 范围中的所有顶级对象 UserDefined 将脚本化为字符串,然后替换为其脚本表示形式,之后模型必须完全解析所有关系。 这将导致加载模型时出现一次性性能命中。

ModelStorageType

模型应存储在内存中,还是应使用文件支持的存储?

ThrowOnModelErrors

定义模型编辑 API 是否在模型中存在任何阻塞错误时引发 DacModelException

使用 API 调用(例如AddObjects(String)AddOrUpdateObjects(String, String, TSqlObjectOptions),)添加新对象或删除/修改模型中的现有对象时, DeleteObjects(String)ConvertToScriptedObject(TSqlObject, String)模型将引发DacModelException指示存在模型阻止错误的信号。 模型阻止错误表示存在严重的错误,例如分析器、解释器以及对象中的其他错误。 如果将此选项设置为 false,即使模型存在如此严重的错误,也允许生成模型。 随后可以使用该方法检索 GetModelErrors() 那些具有模型错误的对象。

将包含模型阻止错误的对象添加到模型时,将编辑该对象,以便以最佳方式删除或注释掉错误部分,以保留没有错误的对象的部分。 例如,在过程正文中出现分析器错误的存储过程在添加到模型之前会注释掉其正文。 最坏的情况是,在保留模型错误时,对象将完全删除。

请注意,当前实现处理模型错误的对象,如下所示

  1. Sql 过程和视图将添加到具有注释正文的模型中。
  2. 保留模型错误时,会完全删除其他对象类型。

适用于