关于Visual Studio:如何在SQL Server CE(精简版)数据库中创建外键关系?

How do you create a foreign key relationship in a SQL Server CE (Compact Edition) Database?

Visual Studio 2005不提供用于在SQL Server CE数据库中的表之间创建关系的界面(我使用的是3.0版),据我所知,您无法使用Management Studio打开Compact Edition DB。 有任何想法吗?


不幸的是,当前不存在用于在SQL Server CE中建立表之间关系的设计器支持(与SQL Server 2005不同)。要建立关系,您需要使用SQL命令,例如:

1
2
3
ALTER TABLE Orders
ADD CONSTRAINT FK_Customer_Order
FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)

如果您正在进行CE开发,我将推荐此常见问题解答:

编辑:在Visual Studio 2008中,现在可以通过右键单击表在GUI中执行此操作。


Visual Studio 2008确实具有允许您添加FK的设计器。只需右键单击表...表属性,然后转到"添加关系"部分。


您需要创建一个查询(在Visual Studio中,右键单击数据库连接->新建查询)并执行以下SQL:

1
2
3
4
ALTER TABLE tblAlpha
ADD CONSTRAINT MyConstraint FOREIGN KEY (FK_id) REFERENCES
tblGamma(GammaID)
ON UPDATE CASCADE

要验证是否已创建外键,请执行以下SQL:

1
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

感谢E Jensen(http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=532377&SiteID=1)


艾伦说有设计师的支持是正确的。 Rhywun暗示您无法选择外键表时是不正确的。他的意思是,在UI中,外键表下拉列表显示为灰色-这意味着他没有右键单击正确的表来添加外键。

总而言之,右键单击前键表,然后通过"表属性">"添加关系"选项选择相关的主键表。

我已经做过很多次了,并且有效。


演练:创建SQL Server Compact 3.5数据库

在上一过程中创建的表之间创建关系

  • 在服务器资源管理器/数据库资源管理器中,展开"表"。
  • 用鼠标右键单击订单表,然后单击表属性。
  • 单击添加关系。
  • 在"关系名称"框中键入FK_Orders_Customers。
  • 在外键表列列表中选择CustomerID。
  • 单击添加列。
  • 单击添加关系。
  • 单击确定以完成该过程并在
    数据库。
  • 再次单击"确定"关闭"表属性"对话框。

  • 自第一次提出这个问题以来,我知道这是"很长的时间"。以防万一,如果它可以帮助某人,

    MS通过SQL Server Compact工具箱(https://sqlcetoolbox.codeplex.com/)很好地支持添加关系。只需安装它,然后您就可以选择使用"服务器资源管理器"窗口连接到紧凑型数据库。右键单击主表,选择"表属性"。您应该具有以下窗口,其中包含"添加关系"选项卡,允许您添加关系。

    Add Relations Tab - SQL Server Compact Tool Box


    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table employee
    (
       empid int,
       empname varchar(40),
       designation varchar(30),
       hiredate datetime,
       Bsalary int,
       depno constraint emp_m foreign key references department(depno)
    )

    我们应该有一个主键来创建外键或两个或更多表之间的关系。


    推荐阅读