告诉MovieModel数据表的主键字段是自增的,由数据库来赋值,它不需要处理,设置方法如下。
选择模型中的主键字段,右键属性,打开属性面板:
属性面板中的StoreGeneratePattern选择Identity,表示在数据插入的时候生成主键,Computed表示插入和修改的时候生成主键。
做到这里成功了一半,还有很重要的一步,手动修改架构文件。右键MovieModel.edmx,点击“打开方式”:
选择以XML的方式打开,然后点击“确定”,主面板就会出现MovieModel.edmx的架构文件。
其中:
概念层结构定义了对象模型 (Object Model),让上层的应用程序码可以如面向对象的方式般访问数据,概念层结构是由 CSDL (Conceptual Schema Definition Language) 表示。
对应层结构负责将上层的概念层结构以及下层的储存体结构中的成员结合在一起,以确认数据的来源与流向。对应层结构是由C-S mapping content部分表示。
储存层结构是负责与数据库管理系统 (DBMS) 中的数据表做实体对应 (Physical Mapping),让数据可以输入正确的数据来源中,或者由正确的数据来源取出。它是由 SSDL (Storage Schema Definition Language) 表示。
点开CSDL content节点,我们可以看到如下信息:
其中红框中的语句就是我们上一步做的操作添加的,代表主键的生成方式。但是这只是在概念层结构上进行了修改,我们应该还要在储存层结构结构(SSDL content)上进行修改。
修改前SSDL信息如下图所示:
修改后如下图所示:
我们给主键字段添加了“StoreGeneratePattern=”Identity”的属性声明。修改完成后,保存,然后关闭面板,我们的第一件事情就做完了。注意有几个实体就要修改几个地方。
接下来就是第二件事情:让程序能够找到MovieModel.edmx的连接字符串。
在本项目中,由于MovieModel.edmx与启动项目是在同一个项目范围下,新建MovieModel.edmx的时候,Visual Studio自动把连接字符串加到Web.config中了。如果是实体模型和启动项目不再同一个项目范围,就必须手动把实体模型的连接字符串(此种情况创建时会自动生成一个App.config文件,里面有连接字符串)添加到启动项目的Web.config中,否则会提示找不到连接出错。