新增的时候怎样只绑定已存在的ef带外键表的新增id,而不新建ef带外键表的新增

其他回答(2)
可以把A的BID与B的ID关联,然后通过管理控制台完成数据库的移植功能更新数据库创建关联。
如果你不想生成外键,那么你只能在A中定义一个类型为B的实体属性,然后设定这个实体属性不被映射到数据库,最后,对这个实体属性处理如下:
public class A
private int _
public int Bid
_b = null;
_bLoaded = false;
private B _b;
private bool _bLoaded = false;
public B B
if(!_bLoaded)
_b = this.LoadB();
_bLoaded =
return _b;
if(value == null)
throw ArgumentNotNullException("value");
_bLoaded = true;
_bid = _b.Id;
同时,编写以下扩展:
public static AExtensions
public static B LoadB(this A a)
//此处执行通过id加载B的功能
return _bService.GetBById(a.Bid);
园豆:5724
Entity Framework Code First 配置介绍:引用关系
http://www.dozer.cc/2012/09/entity-framework-code-first-configuring-relationships/
园豆:1489
&&&您需要以后才能回答,未注册用户请先。mysql中主外键关系及如何用navicat.exe为两表建立外键关系
当前位置:网站首页 - 信息中心
mysql中主外键关系及如何用navicat.exe为两表建立外键关系
<font color="#15-11-5|阅:7045|来自:白狐广告
如果表中已经有数据了,要注意主键的值是否已经在外键里存在,如果有不存在建立关系时会报错。
一、外键:
1、什么是主键外键:
主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性。
外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说到了外键,一定是至少涉及到两张表。例如下面两张表:
上面有两张表:部门表(dept)、员工表(emp)。Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dept_id找到对应的部门,然后才能找到部门表里的各种字段信息,从而让二表相关联。所以说,外键一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。
我们先通过如下命令把部门表和职工表创建好,方便后面的举例:
create table department(
&&&&&&&&&&& id int primary key auto_increment,
&&&&&&&&&&& name varchar(20) not null,
&&&&&&&&&&& description varchar(100)
); create table employee(
&&&&&&&&&&& id int primary key auto_increment,
&&&&&&&&&&& name varchar(10) not null,
&&&&&&&&&&& gender varchar(2) not null,
&&&&&&&&&&& salary float(10,2),
&&&&&&&&&&& age int(2),
&&&&&&&&&&& gmr int,
&&&&&&&&&&& dept_id int );
然后把两张表的数据填好,显示效果如下:
2、外键的使用需要满足下列的条件:(这里涉及到了InnoDB的概念)
1. 两张表必须都是InnoDB表,并且它们没有临时表。
注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。
2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
3. 建立外键关系的对应列必须建立了索引。
4. 假如显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。假如没有显式的给出,InnoDB会自动的创建。
面试题:你的数据库用什么存储引擎?区别是?
答案:常见的有MyISAM和InnoDB。
MyISAM:不支持外键约束。不支持事务。对数据大批量导入时,它会边插入数据边建索引,所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引。
InnoDB:支持外键约束,支持事务。对索引都是单独处理的,无需引用索引。
3、添加外键的语法:
有两种方式:
【方式一】在创建表的时候进行添加
[CONSTRAINT symbol] FOREIGN KEY [id] (从表的字段1) REFERENCES tbl_name (主表的字段2) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}
上面的代码是同一行,中括号里的内容是可选项。
解释如下:
CONSTRAINT symbol:可以给这个外键约束起一个名字,有了名字,以后找到它就很方便了。如果不加此参数的话,系统会自动分配一个名字。
FOREIGN KEY:将从表中的字段1作为外键的字段。
REFERENCES:映射到主表的字段2。
ON DELETE后面的四个参数:代表的是当删除主表的记录时,所做的约定。
RESTRICT(限制):如果你想删除的那个主表,它的下面有对应从表的记录,此主表将无法删除。
CASCADE(级联):如果主表的记录删掉,则从表中相关联的记录都将被删掉。
SET NULL:将外键设置为空。
NO ACTION:什么都不做。
注:一般是RESTRICT和CASCADE用的最多。
【方式二】表已经创建好了,继续修改表的结构来添加外键。
我们在第一段中内容中已经将表建好了,数据也填充完了,现在来给从表(员工表)添加外键,让它与主表(部门表)相关联。代码举例如下:
ALTER TABLE employee ADD FOREIGN KEY(dept_id) REFERENCES department(id);
代码解释:
ALTER TABLE employee:在从表employee中进行操作;
ADD FOREIGN KEY(dept_id):将从表的字段dept_id添加为外键;
REFERENCES department(id):映射到主表department当中为id的字段。
还有第三种添加外键的方法:
以趣味堂的订单表(iwebshop_order)和组合商品订单表(iwebshop_order_zu)为例,当iwebshop_order(主表)和iwebshop_order_zu(从表)建立了外键关系(iwebshop_order表的id=iwebshop_order_zu表的order_id),这样在网站执行删除iwebshop_order表中的订单时,iwebshop_order_zu表中order_id等于iwebshop_order的id的记录同样也就删除了。
下面在Navicat中为iwebshop_order_zu建立外键步骤:
以上条件满足以后下面建立外键:
| 以上内容白狐广告保留解释权,任何个人或单位不得抄袭COPY本公司网站内容,违者必究。
↑上一篇文章:
& & ↓下一篇文章:
友情链接:
网站最佳分辨率为 京ICP备号
白狐广告服务电话:010- 
技术 业务 售后 优化
网站建设,北京网站建设,手机建站,北京网站建设公司&北京白狐广告有限责任公司 版权所有
白狐广告公司地址:北京市朝阳区朝阳路8号朗廷大厦A座312室 邮编:100024MySQL中如何定义外键
稿源:中国站长站综合
假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做pc;用来保存配件供货信息的表叫做parts。
在pc表中有一个字段,用来描述这款电脑所使用的CPU型号;在parts表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。
很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)&&pc表中的CPU型号受到parts表中型号的约束。
首先我们来创建parts表:
CREATE TABLE parts (... 字段定义 ...,model VARCHAR(20) NOT NULL,... 字段定义 ...);
接下来是PC表:
CREATE TABLE pc (... 字段定义 ...,cpumodel VARCHAR(20) NOT NULL,... 字段定义 ...};
若要设置外键,在参照表 (referencing table,即pc表) 和被参照表(referenced table,即parts表)中,相对应的两个字段必须都设置索引(index)。
对parts表:
ALTER TABLE parts ADD INDEX idx_model (model);
这句话的意思是,为parts表增加一个索引,索引建立在model字段上,给这个索引起个名字叫idx_model。
对pc表也类似:
ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);
事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。
下面为两张表之间建立前面所述的那种&约束&。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将pc表的cpumodel字段设置为&外键&(FOREIGN KEY),即这个键的参照值来自于其他表。
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model FOREIGN KEY (cpumodel) REFERENCES parts(model);
第一行是说要为pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;第二行是说将本表的cpumodel字段设置为外键;第三行是说这个外键受到的约束来自于parts表的model字段。
这样,我们的外键就搞好了!如果我们试着CREATE一台pc,它所使用的CPU的型号是parts 表中不存在的,那么MySQL会禁止这台PC被CREATE出来。
考虑以下这种情况:
技术人员发现,一个月之前输入到parts表中的某个系列的cpu(可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当parts表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。
可以在定义外键的时候,在最后加入这样的关键字:
ON UPDATE CASCADE;
即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫&级联&操作。
如果把这语句完整的写出来,就是:
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model FOREIGN KEY (cpumodel) REFERENCES parts(model)ON UPDATE CASCADE;
除了CASCADE外,还有RESTRICT(禁止主表变更)、SET NULL
关于对该文补充:
如果需要在主表删除记录时,当子表有对应记录则不允许删除,就加上 ON delete restrict 。完整案例如下:
两个表,国家和城市,城市中的country_id是外键。
Create table country(
country_id smallint unsigned not null auto_increment,
country varchar(50) not null,
last_update timestamp not null,
primary key(country_id)
)engine=innoDB default charset=utf8;
Create table city(
city_id smallint unsigned not null auto_increment,
city varchar(50) not null,
country_id smallint unsigned not null,
last_update timestamp not null default current_timestamp on update curren_timestamp,
Primary key(city_id),
key idx_fk_country_id (country_id),
constraint fk_city_country Foreign Key(country_id) References country(country_id) on DELETE restrict ON update cascade
)engine=innoDB default charset=utf8;
删除外键:
删除外键定义&&&&&定义外键的时候articles.member_id外键比articles.category_id子句多了一个CONSTRAINT fk_member ?这个fk_member就是用来删除外键定义用的,如下所示:mysql& ALTER TABLE articles DROP FOREIGN KEY fk_Query OK, 1 row affected (0.25 sec)Records: 1 Duplicates: 0 Warnings: 0
这样articles.member_id外键定义就被删除了,但是如果定义时没有指定CONSTRAINT fk_symbol (即外键符号)时该怎么删除呢?别急,没有指定时,MySQL会自己创建一个,可以通过以下命令查看:
mysql& SHOW CREATE TABLE+&&&-+&&&&&&&&&&&&+| Table&&& | Create Table&&&&&&&&&&&&&&&&&&&&&& |+&&&-+&&&&&&&&&&&&+| articles | CREATE TABLE `articles` (`article_id` int(11) unsigned NOT NULL auto_increment,`category_id` tinyint(3) unsigned NOT NULL,`member_id` int(11) unsigned NOT NULL,`title` varchar(255) NOT NULL,PRIMARY KEY (`article_id`),KEY `category_id` (`category_id`),KEY `member_id` (`member_id`),CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1&&&&&&&&& |+&&&-+&&&&&&&&&&&&+1 row in set (0.01 sec)
可以看出articles.category_id的外键符号为articles_ibfk_1,因为就可以执行以下命令删除外键定义:
mysql& ALTER TABLE articles DROP FOREIGN KEY articles_ibfk_1;Query OK, 1 row affected (0.66 sec)Records: 1 Duplicates: 0 Warnings: 0
6. 总结&&-引入外键的缺点是会使速度和性能下降,当然外键所带来的优点还有很多。
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页为已存在的表添加外键-CSDN论坛-真格学网-IT技术综合网站
为已存在的表添加外键-CSDN论坛
来源:互联网 &责任编辑:小易 &时间: 4:00:10
为已存在的表添加外键-CSDN论坛我也是二婚女,有孩子,前夫家里带的。男友就妈妈一个,还有一个亲妹妹已经嫁人有孩子,在隔壁小区住。男友妈妈刚开始不知道我是二婚,然后我让男友大胆的去,因为我不想造成以后结婚东窗事发,就着这么一个地区,纸包不住火。说了以后他妈也不同意,打电话骂我狐狸精,勾引他儿子,让我离开他,说不能接受我。说这么难听,我也就回了几句。然后男友回家,她妈就说我不是凡角,怪厉害!我心想凭什么骂我,你儿子又不是两三岁,我骗他了,拐他了?你儿子自愿的!反正不同意以后,男友也不回家,我们除了上班下班就在一起。他坚信要娶我啊!我们在外面租房子住,他妈经常打电话说不要这个娘了啊。反正我让男友每周回去看看。我又没打算抢,有这个必我来跟你们讲讲吧,这是个真事,我小姨高中毕业没考上大学在家待了几年,后来跟我姨姥出去打工,干了没几天就说不干了,想回家,我姨姥给她买了火车票送到车上,谁知道她又偷偷跑下来了,姨姥以为她回家了呢,打电话回家没回去,她心里就一凉,别丢了啊,过几天,小姨还打回来电话,说她要去挣大钱,之后再没联系,过了差不多一年一个陌生的电话打过来,说了句,我是。。就挂断了,赶紧报警,但是警察也只是立案报了个失踪人口,都不知道从哪丢的,有没有转移,怎么找,那时候通信不普及还没有达到人人有手机,后来的丢的第三年,姨姥去远处给小姨算命,毕竟是自个的闺女哪有不想的,那天也巧了,平时神婆家里得排队,按号,这回去的早,头一个,本网有用户碰到这样的问题:为已存在的表添加外键-CSDN论坛,具体问题如下:
本网根据需求用户需求,为用户寻得以下其他网友提供的解决方法,方法仅供参考,具体如下:让孩子能快速的学会说话,可以注意以下方面:1、父母多与宝宝交流,让宝宝从大人不断重复的名词中明白对应的物品,我们千万不要低估孩子的接受能力,他(她)只是不会说,但小家伙心里什么都明白,孩子的成长速度总。防恶意抓取,请查看原文,,真格学网提供内容。解决方案1:压岁钱我给你存着,一定没不了你要听话,你不听话偷小孩的就来把你偷走为了不让我吃零食,骗我说他买了一个测试仪,往嘴里一放就能知道今天吃了啥吃耳屎会变成哑巴西瓜仔咽下去会在肚子里发芽苹果吃多了会拉肚子,橘。防恶意抓取,请查看原文,,真格学网提供内容。
alter&table&A&add&constraint&fk_name&foreign&key&(ID)&references&B;
狗狗一定要认真的管教。因为狗狗在这个年纪会有叛逆期,而且他在这么小的时候他是犯各种错误,会试探主人的极限在哪里,作为主人的这个时候,该管教就要管教,一定不能手软,严重的话要揍护士。护食行为也是要好好的矫正这个行为的。但是狗狗犯错误的话,比如说他这些在家里捣乱就是说明你平时没有好好的花很多时间陪她出去遛,它需要有东西让他发泄磨牙,让他的精力有处释放,不然的话就是会造成很多这种麻烦的问题。平时的话就是。防恶意抓取,请查看原文,,真格学网提供内容。解决方案2:还记得你当年买车的时候吗?当时你买车的时候有没有后悔被销售员忽悠了呢?其实现在买车的都有一个特点就是各种条件特别坑人,比如你买车之后必须在那里买保险、上牌啊等等,这都是附加的条件。还有就是你买车付钱之。防恶意抓取,请查看原文,,真格学网提供内容。
alter&table&t&add&constraint&fk_name&foreign&key(id)&refence&r;专利授权公司UnwiredPlanetInternational(简称UPI)赢得了与华为之间的专利官司,英国英格兰、威尔士高等法院认为,华为使用了UPI的相关专利,因此它必须向UPI支付授权费。华为英国总部基于“公平合理非歧视”原则,法院认为华为4G设备应向UPI支付0.051%的费用,4G手机支付0.052%的费用,3G移动设备支付0.032%,3G基础设施支付0.016%,2G工具包与手机支。防恶意抓取,请查看原文,,真格学网提供内容。
解决方案3:1、电视剧中三打白骨精后唐僧怒逐孙悟空,猪八戒和沙和尚都苦劝唐僧不要赶走大师哥;原著中猪八戒一个劲的添油加醋,一心让唐僧赶走猴子,沙和尚则沉默是金。2、电视剧中孙悟空好像除了和二郎神武力单挑时不分胜负。防恶意抓取,请查看原文,,真格学网提供内容。
alter&table&t&add&constraint&fk_name&foreign&key(id)&references&r;
A站ACFUN,国内目前人气最高的弹幕式视频网站(简称AC或A站)B站BILIBILI是中国大陆一个ACG相关的弹幕视频分享网站,其前身为视频分享网站Mikufans。该网站由原AcFun网友“⑨bishi”于日创建。由于AcFun网站在运行时往往不稳定,所以Mikufans建站的初衷是为用户提供一个稳定的弹幕视频分享网站。该网站于日更名为Bilibili,现拥。防恶意抓取,请查看原文,,真格学网提供内容。第一步:用五点式将打底液均匀的涂抹在整个面部,轻盈的底妆能够让整个妆容焕然一新。第二步:在两边的笑肌上扫上粉色的腮红。森女的自然好气色可不能少哦。第三步:接着是画眉。先用眉笔沿着眉毛勾勒出大致的眉形,再用眉粉填充,简单画出基本的眉色。第四步:用染眉膏顺着眉头的方向轻轻刷几下,让眉色更加自然。第五步:眼妆部分也是非常重要的。选用粉色眼影打满整个眼窝部分,即黑色虚线圈出位置。第六步:接着选择棕红色的眼影,从眼头逐渐向眼尾晕染,在眼角处稍稍向外延长。第七步:用酒红色的眼影画出下眼线,同时和上眼线自然衔接。再用浅棕色的眼影笔画在眼头位置,起到提亮效果。第八步:用眼线液笔沿着睫毛根部画出一条细长的黑色眼让孩子能快速的学会说话,可以注意以下方面:1、父母多与宝宝交流,让宝宝从大人不断重复的名词中明白对应的物品,我们千万不要低估孩子的接受能力,他(她)只是不会说,但小家伙心里什么都明白,孩子的成长速度总是出乎父母的预期。比如,你以为还是个小宝宝,但实际上我们平时互相交流的冰箱、电灯、门等这些家里经常提及的名字,宝宝们都明白指的是什么。2、尽量用一种语言交流,比如家里有某种方言混着普通话交流的,这种尽量和宝宝沟通时,用普通话,不要混淆宝宝语言名词和实际物品对应的关系。3、不要说叠词,比如:吃饭饭、穿衣衣,这些都没有必要,跟宝宝说话就用平常的用语,有助于宝宝大脑的成长,同时也从小养成把孩子当个人,而
本文相关:}

我要回帖

更多关于 ef带外键表的新增 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信