我刚开始使用LINQ,但在过去做了很多数据库开发。
我刚刚开始使用的软件是:
// MyDataContext is a sub class of DataContext, that is generated with SqlMetal
MyDataContext db = new MyDataContext (connectionString);
db.CreateDatabase();若要在数据库第一次运行时创建数据库,请执行以下操作。
我需要在表中添加一些索引.
如何告诉DataContext我需要哪些索引?
否则我该如何控制这一切?
(我可以使用sql脚本,但我喜欢的理想做法是db.CreateDatabase总是创建一个与数据访问代码匹配的数据库)
(或者更糟的是,软件可以完全访问数据库服务器,我们的软件经常动态创建数据库来存储模型运行的结果等等,所以请不要告诉我我们不应该用代码创建数据库)
我似乎不是唯一一个在DataContext.CreateDatabase() ()上打滑的人--参见http://csainty.blogspot.com/2008/02/linq-to-sql-be-careful-of.html
发布于 2010-03-03 00:00:22
据我所知,DataContext.CreateDatabase方法只能创建主键。
当您直接查看DBML时,您将看到没有用于定义索引的元素。因此,IMHO,除了假设CreateDatabase不能这样做外,也是如此。
因此,我认为“自动”创建索引的唯一方法是首先调用DataContext.CreateDatabase,然后调用DataContext.ExecuteCommand将索引添加到刚刚创建的表中。
发布于 2016-07-13 10:50:22
可以在DatabaseCreated方法上执行SQL。
public partial class DatabaseModelsDataContext : System.Data.Linq.DataContext
{
partial void OnCreated ()
{
var cmdText = @"
IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_LeafKey')
DROP INDEX IX_MyTableColumn
ON [mydb].[dbo].[Leaf];
CREATE INDEX IX_MyTableColumn
ON [mydb].[dbo].[MyTable] ([column]) ;";
ExecuteCommand(cmdText);
}
}https://stackoverflow.com/questions/2340701
复制相似问题