我试图找出如何重建下列SQL到适当的迁移到MySQL表MSSQL到MySQL迁移
CREATE TABLE [LinkedAccountClaims](
[UserAccountID] [uniqueidentifier] NOT NULL,
[ProviderName] [nvarchar](30) NOT NULL,
[ProviderAccountID] [nvarchar](100) NOT NULL,
[Type] [nvarchar](150) NOT NULL,
[Value] [nvarchar](150) NOT NULL,
CONSTRAINT [PK_LinkedAccountClaims] PRIMARY KEY CLUSTERED
(
[UserAccountID] ASC,
[ProviderName] ASC,
[ProviderAccountID] ASC,
[Type] ASC,
[Value] ASC)
CREATE NONCLUSTERED INDEX [IX_UserAccountID] ON [LinkedAccountClaims]
( [UserAccountID] ASC)
ALTER TABLE [LinkedAccountClaims] WITH CHECK ADD CONSTRAINT [FK_LinkedAccountClaims_UserAccounts_UserAccountID] FOREIGN KEY([UserAccountID])
REFERENCES [UserAccounts] ([ID])
ON DELETE CASCADE
到其构造迁移如下
CreateTable(
"LinkedAccountClaims",
c => new
{
UserAccountID = c.String(nullable: false, maxLength: 38, storeType: "char"),
ProviderName = c.String(nullable: false, maxLength: 30, storeType: "nvarchar"),
ProviderAccountID = c.String(nullable: false, maxLength: 100, storeType: "nvarchar"),
Type = c.String(nullable: false, maxLength: 150, storeType: "nvarchar"),
Value = c.String(nullable: false, maxLength: 150, storeType: "nvarchar"),
})
.PrimaryKey(t => t.UserAccountID)
.PrimaryKey(t => t.ProviderName)
.PrimaryKey(t => t.ProviderAccountID)
.PrimaryKey(t => t.Type)
.PrimaryKey(t => t.Value)
.Index(t => t.UserAccountID);
我不确定我在迁移中正确执行主键集群,并且我不确定如何处理外键。
UPDATE: 即正确聚类主键,并添加您使用代码foregin关键,像这样
.ForeignKey("UserAccounts", t => t.UserAccountID, cascadeDelete: true)
那不是MySQL'create table'语句。你在这里得到的是LINQ查询。那么你的问题是什么? – 2014-02-18 18:59:12
这是一个sql迁移到mysql数据库。它创建的表很好,但我手动做外键。我想知道如何在linq迁移代码中执行此操作,并且如果处理主键的方式确实将它们设置为sql显示的集群。 – dinotom
我不会在LINQ中这样做,我敢肯定有人可能会在LINQ中找到一种方法,但为此,您应该只写MySQL创建表语法。 http://dev.mysql.com/doc/refman/5.0/en/create-table.html – 2014-02-18 19:03:31