问题标签 [ssdl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3429 浏览

.net - 实体框架如何判断是否应该在关系上使用多个“一”或“零或一”?

作为我们代码生成过程的一部分,我正在以编程方式创建一个 edmx 文件,我想知道当您“从数据库更新模型”时,设计师是如何决定使用“1”或“0..1”来建立关系的。对此有何见解?谢谢

编辑:

好的,我认为当“多”端是可为空的外键时,它使用“0..1”,如果它不可为空,则使用“1”。谁能证实这一点?

0 投票
1 回答
804 浏览

entity-framework - StoreGeneratedPattern 属性何时添加到 ssdl 中的属性?(实体框架)

当我创建一个新图表和“从数据库更新模型”时,StoreGeneratedPattern 属性被添加到一些主键属性中,但不是全部。设计师使用什么标准来决定是否添加这个?

0 投票
4 回答
5445 浏览

mysql - MySql 和 Entity 框架随机给出 Schema specified is not valid 错误

我正在使用实体框架来访问我的 MySQL 数据库。该模型是使用 EDMGEN2 生成的,一切正常。我可以做我所有的 linq-to-entity 查询善良......

...直到一段不确定的时间过去,我得到“ProviderManifestToken '5' is different from '5.1' that were received before”错误。为什么我只指定了“5.1”时却遇到了“5”?!!?

让错误停止的唯一方法是重新上传到 edmx 文件(根本没有改变),覆盖之前的文件。那时,应用程序将愉快地向用户提供数据,直到BAM错误发生可能在几个小时后,有时是几天后,我将不得不再次开始追逐我的尾巴。

我已经尝试将 ProviderManifestToken="5.1" 更改为 "MySQL"、"6"、"5" 并且会发生相同的情况:工作一段时间然后出现错误。作为奖励,我在 vb.net webforms 应用程序中只有一个 edmx 文件,所以它被什么弄糊涂了?

我的 edmx 文件的前几行如下所示:

我在 web.config 中的连接字符串如下所示:

这已经持续了上个月,我无法找出问题的根源!任何建议都将不胜感激

设置如下:

Windows Server 2003 MySQL v 5.1.38(也在 5.1.36 上试过) Connector/NET 6.1.1.0(也在 6.0.4.0 上试过)

错误如下:

指定的架构无效。错误:MySql.Data.Entity.Properties.SchemaDefinition-5.1.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(7,4):错误 0019:EntityContainer 名称必须是唯一的。已定义名为“Schema”的 EntityContainer。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(336,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Table”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(348,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(374,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.View”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(386,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(412,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Function”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(437,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Procedure”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(447,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Parameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(471,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Constraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(483,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.CheckConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(491,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(500,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKeyConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(509,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKey”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(520,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(535,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableTableConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(548,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(561,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.ConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(574,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.FromForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(587,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(600,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.TableTableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(613,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(626,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.FunctionFunctionParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(639,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ProcedureProcedureParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(652,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(665,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(678,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.ViewConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(691,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(704,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(7,4):错误 0019:EntityContainer 名称必须是唯一的。已定义名为“Schema”的 EntityContainer。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(391,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Table”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(403,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(429,4):错误 0019:模式中的每个类型名称都必须是唯一的。类型名称“MySqlClient.View”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(441,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(467,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Function”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(492,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Procedure”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(502,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.Parameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(526,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Constraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(538,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.CheckConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(546,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.ConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(555,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKeyConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(564,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKey”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(575,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(590,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.TableTableConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(603,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(616,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(629,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(642,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(655,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableTableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(668,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(681,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FunctionFunctionParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(694,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ProcedureProcedureParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(707,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(720,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(733,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(746,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(759,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.ToForeignKeyViewColumn”已定义。|

0 投票
2 回答
1011 浏览

mysql - Mysql EF 存储过程,没有生成 C# 部分

我有一个带有存储过程的 mysql 数据库。当我添加到架构时,我在 edmx 中发现了这个:

这是我在 SSDL 部分。但是 Designer.cs 文件中没有任何内容,这是怎么回事?

0 投票
1 回答
4808 浏览

.net - 实体框架 - 实体映射问题

我有两个表:地址和联系人,它们在contactID(在联系人中)上加入。这两个表在我的实体数据模型 (EF 4.0) 中都有实体,我不想修改它们。

我确实想创建一个包含来自两个实体的信息的新实体。

到目前为止我做了什么:

在 CSDL 中:

在我的 CS 映射中:

我收到的错误是:

从第 150 行开始映射片段的问题:必须为 EntitySet ContactTest 的所有关键属性 (ContactTest.addressID) 指定映射。

当 Contact 实体中不存在 AddressID 时,我应该如何映射该实体?我想我需要某种关联,但我不确定如何去做……请记住,我不想修改现有的地址和联系人实体。

0 投票
2 回答
3721 浏览

c# - EF4:如何生成:.csdl、.edmx、.msl 和 .ssdl 文件

我正在开发一个使用 linq to sql 的项目。在我的模型文件夹中,我有 4 个文件:

但是该模型与当前数据库已过时。

我想知道如何通过自动化过程(如果可能)更新模型。

而且我想知道如何生成这些文件。我可以通过 .edmx 创建一个 .edmx 文件add => new item => ADO.NET Entity Data Model。但我不知道如何创建其他文件。

提前致谢。

布鲁诺

0 投票
1 回答
354 浏览

security - 用于阻止用户设置的事件的 DACL

我想做以下事情:创建一个使用全局命名空间注册的事件并修改它的 DACL 以便:

  • 普通用户可以读取事件状态(使用带有 0 超时值的 WaitForSingleObject)
  • 管理员可以更改事件状态(SetEventResetEvent

此外,大多数情况下,该事件最初由非管理员用户在应用程序初始化期间创建

这个想法是允许终端服务服务器上的系统管理员向属于我的应用程序的所有进程(有很多)发送信号,它们应该尽快终止并保持锁定。这必须适用于所有用户会话,但也必须提供某种安全层。

在创建期间,我正在努力为事件对象找到正确的 DACL:我似乎无法将更改对象状态的能力仅限于管理员。

我正在使用ConvertStringSecurityDescriptorToSecurityDescriptor从 SSDL 字符串创建 DACL。这是我最接近工作样本的情况:

这应该给ALL_ACCESS内置Administrators组的成员和SYNCHRONIZEEVERYONE.

不幸的是,生成的 ACL 并不能完全按照我想要的方式工作:如果我使用 ProcessExplorer 检查生成的对象状态,我会看到管理员拥有所有权限(根据需要),但每个人仍然拥有“修改状态”权限集。

万一这很重要,我使用的是 Delphi 6。生成的应用程序必须与 windows 2003 server/XP 及更高版本兼容。

提前致谢

0 投票
1 回答
63 浏览

entity-framework - 忽略实体框架的 SSDL 中的列

我们使用 dotconnect for Oracle 并在我们的数据库中有三个模式(Master、Staging 和 Prod)。我们有三个 SSDL 文件,一个对应于每个模式。到目前为止,所有模式都具有相同的表结构,但现在我们在一个模式中的一个表中的列数较少。我们对所有三种模式都有一个数据模型,并在查询相应的模式时使用不同的 SSDL 文件。有没有办法忽略 SSDL 文件(或其他地方)中的列,所以我们可以继续使用单个数据模型?

谢谢。

0 投票
1 回答
1059 浏览

c# - 自定义 SSDL - 错误 2002:作为此 MSL 的一部分指定的概念模型的 EntityContainer 在 MetadataWorkspace 中不存在

我需要能够在 Vista DB 和 SQL Server 之间切换。我使用 SQL Server 生成了我的 edmx,并为 Vista DB 创建了一个单独的 SSDL 文件。当我更新我的连接字符串以使用我的 Vista DB SSDL 时,我收到以下错误:

我尝试创建一个单独的 MSL(它只是 SQL Server 使用的 MSL 的副本,其中似乎没有任何特定的提供程序),但这并没有解决问题。我正在引用所需的 VistaDB dll,事实上,如果我为 Vista DB 重新创建我的 edmx,一切正常,但这样来回切换真的很烦人。

还有什么我想念的吗?

0 投票
0 回答
321 浏览

c# - cscdl、.msl 和 .ssdl 文件的 EF6 数据库第一个位置

我有一个 WPF 应用程序,其中包含一个采用数据库优先方法的 EF6.0 项目。用户应该能够以不同的名称在不同的位置打开不同的数据库。所以我的 ConnectionString 不是来自 App.config 像这里:

我宁愿自己在代码中创建它并将数据源设置到正确的位置:

现在我通过添加其他项目并将 EF 事物放入仅包含数据库事物的单独项目(与主项目不同)来更改我的应用程序的结构。调试以下代码时,我遇到了异常

异常消息是:指定的架构无效。错误:SQLiteModel.ssdl(2,2):错误 0152:没有为具有不变名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序找到实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。

我发现有些文件不在它们应该在的位置。即 SQLiteModel.csdl、SQLiteModel.msl 和 SQLiteModel.ssdl。它们位于 ...\obj\Debug\edmxResourcesToEmbed\ 目录中。我还发现在 *.ssdl 文件中还有一个在 ProviderManifestToken="data source= 下指定的数据源

我认为我的程序第一次只是意外地工作。现在我有一些问题: 1. 我真的必须嵌入这个包含数据源固定位置的 *ssdl 文件吗?2. 以后是否可以通过在 ConnectionString 中设置数据源来更改数据库位置?3. 在这种情况下,数据库优先方法是否可行?4. 在我的多项目解决方案中,我必须在哪里复制/嵌入这些文件?

提前致谢!

更新: 我发现我的问题很愚蠢。问题似乎是在我的主项目中 app.config 不包含所有需要的信息。由于我想将数据库内容与其他内容分开,因此在主项目的 app.config 中根本不应该有与 EF 相关的内容。

我通过编程 app.config 解决了这个问题。我的 app.config 看起来像这样:

我创建了一个类 MySQLiteConfiguration,如下所示:

这个类用于配置上下文:

在使用上下文时,我使用传递我自己的连接字符串的构造函数:

我很抱歉我的愚蠢问题。我希望帮助一些在使用 Entity Framework 6.0 和 SQLite 迈出第一步时遇到困难的人。

问候