问题标签 [sqlmetal]
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.
azure - 在 SQL Azure 数据库上使用 SQLMetal
由于我不想讨论的原因,我们的主数据库架构目前仅在 SQL Azure 中。我们正在使用像 Enzo Backup 这样的工具在本地将其关闭(我们正在等待他们的开发人员修复我们在尝试下载时遇到的一些错误),但与此同时,我想生成一个 Linq-to-Sql来自 SQL Azure DB 架构的 ORM 映射。当我尝试这样做时,输出会生成一堆错误消息,如下所示:
警告:SQM1012:无法从 SqlServer 中提取表 'dbo.[TableName]'。无效的对象名称“syscomments”。
是否可以从 SQL Azure 数据库生成 ORM 映射?
编辑
请注意,即使在最新版本 (2008 R2) 中,从 SSMS 生成脚本也不起作用。当您尝试在 SQL Azure 数据库实例上生成脚本时,您在生成的报告中收到以下错误,并且在处理第一个对象之前它就失败了:
System.IndexOutOfRangeException:索引超出了数组的范围。在 Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) 在 System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) 在 System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object 参数)
编辑 2
我只是尝试使用免费的SMOscript工具,它会生成相同类型的错误消息:
因此,目前看来,轻松生成 DDL 脚本是不可能的,而且它在 2008 R2 的SMO级别针对 SQL Azure DB 被破坏了。
c# - 我可以在 VC2010 中很好地设置 LINQ to SQL,那么为什么 SQLMetal 相关?
我是新来的,所以你好。
我正在使用 ASP.NET 4,并且我正在使用 LINQ to SQL 进行数据控件。按照建议,我创建了一个 DBML(LINQ to SQL 类项),然后从 SQL Server 拖动相关表。然后我在我的代码中使用这个 DBML 与 LINQ 即:
这一切都很好。我现在遇到了 SQLMetal。我看不到这个工具的相关性,我错过了什么吗?
谢谢,
埃德
.net - Sqlmetal 无法为 SQL Server Compact Edition 3.5 db 生成 dbml 文件
我似乎无法使用 Sqlmetal 为简单的 SSCE 3.5 db 生成 dbml 文件。
我正在使用 VS 命令提示符,正坐在包含 db 的 VS 项目目录中,然后在提示符处输入以下 Sqlmetal 命令:
sqlmetal /dbml:fom.dbml fom.sdf
sqlmetal 返回以下错误:
错误:初始化字符串的格式不符合从索引 0 开始的规范。
谁能看到我在这里做错了什么?
[请注意,我运行的是 Windows 7 64。我已经尝试了所有三个 VS 命令提示符.. 都导致相同的错误]。
linq-to-sql - sqlmetal 如何生成关联名称?
sqlmetal 生成的关联名称一直是令人沮丧的根源。有时关联只是将“Id”去掉末尾的列名,有时它会根据外键约束名称生成关联名称。
我根本无法弄清楚它使用什么步骤来生成这些名称,并且最近的架构更改再次彻底改变了关联名称,所以我想了解一下。
我有两个表,它们在某种链中相互引用。像这样的东西:
这些是架构更改之前的类,其中 In 和 Out 表之间有一个额外的 FK 字段。删除该字段后,sqlmetal 现在生成以下内容:
以前的类应该是完全对称的,但现在生成的类是完全不对称的。谁能解释一下?
c# - 谁能解释一下以下两个查询的区别?
我正在使用 SqlMetal (linq to sql) 从数据库中检索内容。但是,我使用以下代码得到不同的结果:
填充此记录 1 后,但记录 2 为 NULL,我希望它们相同。
谁能解释其中的区别?
编辑:
在旁注中:
r.selected_partial_url_id 是可为空的 int,被比较的属性也是如此 r.selected_last_part_url_id 是 int 类型,被比较的属性也是如此 r.language_id 是 int 类型,被比较的属性也是
c# - 如何使用 SQL Metal 或在代码中设置自动生成值和自动同步
现在对我来说是凌晨 1:30,所以如果这里有任何令人困惑的地方,我很抱歉.. 这在我的脑海中似乎是有道理的.. :-)
我一直在使用 SQLMetal 为我的数据库表生成数据上下文......
我使用了命令:
这一切都很好,我可以在我的桌子上做所有的 CRUD 功能,等等......几乎......
我有一个“标题”表,其中有一个“唯一标识符”类型的字段......当我插入新记录时,我希望数据库将值分配给记录,并使用新的 guid 更新我的标题表记录从数据库。目前,我添加到表中的任何新记录的 id guid 字段都为零。所以当我尝试添加第二条记录时,它会因重复键而失败。
在寻找答案时,我遇到了这篇文章: SQL Server 2008 GUID column is all 0's
它提到在 dbml 中分别将“自动生成的值”和“自动同步”设置为“True”和“OnInsert”。
我的问题是,我没有 dbml 文件,因为它不是在我运行 SQLMetal 命令时创建的。我改用 .map 文件生成参数。我意识到有一个“/dbml”标志,但我不知道该使用哪一个。
我应该使用 dbml 文件而不是地图文件吗?
或者有没有办法在代码中,当我创建一个新的标头记录变量时,我可以说如下内容来告诉系统使用数据库生成的 ID 值并更新我的记录变量....:recHdr.Id .AutoGeneratedVales = True; recHdr.Id.AutoSync = OnInsert;
非常感谢...
linq-to-sql - 使用 sqlmetal 生成 dbcontext 会将我的表值 UDF 列创建为可为空的
我创建了一个内联表 UDF,其中包含一些不同类型的列。
但是,尽管某些列设置为非空,但 sqlmetal.exe 将它们创建为可空类型:
为什么它没有得到正确的不可为空的类型?
我将 sqlmetal (Microsoft (R) Database Mapping Generator 2008) 版本 4.0.30319.1 用于 .NET Framework 版本 4。
sql-server-ce - 我可以告诉 SqlMetal 不要添加 INotifyPropertyChanging 和 INotifyPropertyChanged 吗?
我目前正在使用SqlMetal为 SQL Server Compact Edition 3.5 数据库生成数据上下文。
此数据库将在 Windows Phone 7 应用程序中使用,并且只能从中读取。出于这个原因,我想跳过跟踪属性更改的逻辑(实现 INotifyPropertyChanging 和 INotifyPropertyChanged),因为用户/系统不会更改数据库。
有什么办法可以告诉 SqlMetal 排除这个额外的逻辑吗?
或者,除了自己创建上下文和类之外,如果我将生成的文件(大部分)保持原样,是否可以进行任何相对简单的更改来提高性能?
c# - 使用 LINQ to SQL 和 sqlmetal System.InvalidCastException 的 C# 中的错误:指定的强制转换无效
当运行我在我们的生产服务器或其他开发人员机器上编写的一些代码时,它会在这条线上崩溃。
CalcIdent 只是一个字符串形式的 guid。
我已经在我的本地数据库上运行了 sqlmetal,其中 Ac_CalcDetail 是我们创建强类型代码和 Ac_CalcDetail 类的主表。问题是当我在生产服务器或其他开发人员的一台机器上运行代码时。我们已经使用 LINQ 一年多了,从来没有遇到任何问题,所以对此感到非常困惑。以前我得到的异常非常具体,说哪个字段丢失了,哪个字段很棒,但从我的研究来看,这个错误显然可能是某个字段具有错误的数据类型。噩梦,完全不可能通过这个错误进行调试。
我认为目前唯一的解决方案是在 SQL Server Management Studio 中备份我的数据库,然后让其他人使用它。由于我们是一家小公司,我们倾向于对我们自己的数据库做任何我们想做的事情,然后创建各种 SQL 脚本放在一个保管箱文件夹中以使我们的数据库同步(或者至少我们认为是同步的)。不确定这是否意味着我们要么必须停止使用 LINQ,要么开始使用一些更高级的 SQL 东西(SQL 存储库或 SQL 数据库比较工具等)。
这很奇怪,因为我知道我们的数据库多年来(如果有的话)并不完全一样,所以不知道为什么现在会发生这个错误以及为什么错误消息没有说明任何内容!
linq-to-sql - LINQ to SQL:复合 FK 只有一半可以为空
在对所有内容都使用复合键(例如SiteId, $(Table)Id
)的多租户应用程序中,我有以下两个表:
Owner (SiteId, ThingId)
和一个从to的外键Thing (SiteId, ThingId)
。
如果我写这样的方法:
我得到了例外
SiteId
为了解决这个问题,我可以在表中添加(perhaps ThingSiteId
)的第二个副本Owner
。但它只会等于 SiteId,所以我会花费数据库大小和架构复杂性来解决我的 ORM。
我如何告诉 LINQ to SQL 它不需要担心外键关系的那一半,而只需要设置Owner.ThingId=NULL
?