SQL CE 3.5 - 从另一个表中选择字段

时间:2013-03-04 14:30:57

标签: c# visual-studio-2008 .net-3.5 sql-server-ce

我第一次使用数据库(SQL CE 3.5)并且我不确定如何定义表之间的关系,以后(我认为)我将不得不使用连接来选择一些值另一个表中的一个字段。

_________       __________    __________
MY TABLE|      | TABLE A |   | TABLE B |
---------      |---------|   |---------|
OrderID |      | a_Text  |   | b_Text  |   
---------      |---------|   |---------| 
a_Text  |
---------
b_Text  |
---------

当我在[MY TABLE]中定义a_Text的值时全部实现时,我只希望能够为[表A]中定义的a_Text设置一个值(并再次为b_Text设置)。

1 个答案:

答案 0 :(得分:0)

您想要的是a_Text字段上的Foreign Key Constraint,该字段会针对该特定字段值强制MY_TABLE / TABLE_A之间建立链接。

这是数据库关系,因此应在数据库级别定义,如果需要,还应在模型级别定义。大多数现代ORM技术,例如EntityFramework / NHibernate在模型级别表示相同的关系方面做得非常好,或者至少使其非常简单 - 如果您直接通过数据库创建上下文,EF将自动执行此操作。

通过VS Designer使用SQLCE创建关系非常简单 - Walkthrough: Creating a SQL Server Compact Database给出了在两个表之间添加关系的示例。


根据您的要求,我不建议您将a_Text中的值字段(TABLE A)作为PK。最大的问题之一是,如果您更新了在整个其他引用表中级联该更改所需的密钥。引入surrogate key并使a_Text字段成为unique key本身更加灵活。

  My Table      Table A    Table B
  --------      -------    -------
  OrderID       a_ID       a_ID
  a_ID          a_Text     a_Text
  b_ID