博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle + Entity Framework 更新没有设置主键的表
阅读量:7041 次
发布时间:2019-06-28

本文共 4522 字,大约阅读时间需要 15 分钟。

最近用Entity Framework 开发的时候,发现一个问题,在默认情况下,EF不能对一个没有主键的表进行更新、插入和删除的动作。

那么,应该怎么处理没有主键的表呢?

我们打开这个表的edmx文件,可以看到以下的xml片段

SELECT "REP"."ZONE" AS "ZONE", "REP"."NO" AS "NO", "REP"."HELP_NO" AS "HELP_NO", "REP"."NO_TYPE" AS "NO_TYPE", "REP"."ID_NO" AS "ID_NO", "REP"."NAME" AS "NAME", "REP"."TEL" AS "TEL", "REP"."MAIL_NO" AS "MAIL_NO", "REP"."ADDRESS1" AS "ADDRESS1", "REP"."ADDRESS2" AS "ADDRESS2", "REP"."JOINDATE" AS "JOINDATE", "REP"."ELITE_D" AS "ELITE_D", "REP"."PD1" AS "PD1", "REP"."CUR_CPS" AS "CUR_CPS", "REP"."PREV_CPS1" AS "PREV_CPS1", "REP"."YEAR_CPS" AS "YEAR_CPS", "REP"."IA_CPS" AS "IA_CPS", "REP"."PREV_BAL" AS "PREV_BAL", "REP"."CUR_BAL" AS "CUR_BAL", "REP"."ELITE" AS "ELITE", "REP"."CUR_CAMP" AS "CUR_CAMP", "REP"."SALES" AS "SALES", "REP"."RETURN" AS "RETURN", "REP"."NO_ACT" AS "NO_ACT", "REP"."PD_NO" AS "PD_NO", "REP"."CUR_ORDER" AS "CUR_ORDER", "REP"."BIRTHDAY" AS "BIRTHDAY", "REP"."RNAM" AS "RNAM", "REP"."POST_YN" AS "POST_YN", "REP"."CARD_NO" AS "CARD_NO", "REP"."CARD_YYYYMM" AS "CARD_YYYYMM", "REP"."TEL2" AS "TEL2", "REP"."MOBILE" AS "MOBILE", "REP"."EMAIL" AS "EMAIL", "REP"."PREV_CPS2" AS "PREV_CPS2", "REP"."SEMAIL" AS "SEMAIL", "REP"."PASSWORD" AS "PASSWORD", "REP"."NEXT_CPS" AS "NEXT_CPS", "REP"."TRAN_D" AS "TRAN_D", "REP"."PASS_CNT" AS "PASS_CNT", "REP"."ORDER_CT" AS "ORDER_CT", "REP"."ORDER_AT" AS "ORDER_AT", "REP"."SNAME" AS "SNAME", "REP"."NOTES1" AS "NOTES1", "REP"."NOTES2" AS "NOTES2", "REP"."PPWD" AS "PPWD", "REP"."SALES6" AS "SALES6", "REP"."NO5" AS "NO5", "REP"."SALES4" AS "SALES4", "REP"."DELIVER" AS "DELIVER", "REP"."ISWHWB" AS "ISWHWB", "REP"."LOS" AS "LOS", "REP"."CREDITLINE" AS "CREDITLINE", "REP"."OCCUPATION" AS "OCCUPATION", "REP"."ENTRYLOCATION" AS "ENTRYLOCATION", "REP"."SOURCE" AS "SOURCE", "REP"."SURVEYTAG" AS "SURVEYTAG", "REP"."HMDATE" AS "HMDATE", "REP"."ISRCVSMS" AS "ISRCVSMS", "REP"."PAYMETHOD" AS "PAYMETHOD", "REP"."ISPBAMCOURSE" AS "ISPBAMCOURSE", "REP"."ISBSDCOURSE" AS "ISBSDCOURSE", "REP"."BSADATE" AS "BSADATE", "REP"."CUR_NETSALES" AS "CUR_NETSALES", "REP"."WEBPCDATE" AS "WEBPCDATE", "REP"."WEBPC" AS "WEBPC", "REP"."ISMCNOTICE" AS "ISMCNOTICE", "REP"."OLDNO" AS "OLDNO", "REP"."EMAILACCOUNT" AS "EMAILACCOUNT", "REP"."MCDATE" AS "MCDATE", "REP"."PASS_CRTDATE" AS "PASS_CRTDATE", "REP"."STARXNO" AS "STARXNO", "REP"."ZONEID" AS "ZONEID", "REP"."ORDER_INFO" AS "ORDER_INFO", "REP"."TRAN_D_EC_DATE" AS "TRAN_D_EC_DATE", "REP"."REALTITLEID" AS "REALTITLEID", "REP"."PAIDTITLEID" AS "PAIDTITLEID", "REP"."PUBLICTITLEID" AS "PUBLICTITLEID", "REP"."ISASLF" AS "ISASLF", "REP"."ASLFROSTARTCAMP" AS "ASLFROSTARTCAMP", "REP"."ASLFROENDCAMP" AS "ASLFROENDCAMP", "REP"."ISVIRTUALID" AS "ISVIRTUALID", "REP"."ASLFSPONSORID" AS "ASLFSPONSORID", "REP"."MPCACTCPS" AS "MPCACTCPS", "REP"."MPCORDVAL" AS "MPCORDVAL", "REP"."ASLFCDBENDCAMP" AS "ASLFCDBENDCAMP", "REP"."ASLFSTARTCAMP" AS "ASLFSTARTCAMP", "REP"."ISDRCERT" AS "ISDRCERT", "REP"."DRCERTSTARTCAMP" AS "DRCERTSTARTCAMP", "REP"."DRCERTENDCAMP" AS "DRCERTENDCAMP", "REP"."DRFOUSECAMP" AS "DRFOUSECAMP", "REP"."MAIL_NO1" AS "MAIL_NO1", "REP"."ADDRESS12" AS "ADDRESS12", "REP"."ADDRESS22" AS "ADDRESS22", "REP"."RECOMMENDERID" AS "RECOMMENDERID", "REP"."RECOMMENDERNAME" AS "RECOMMENDERNAME", "REP"."RECOMMENDERNATIONALID" AS "RECOMMENDERNATIONALID", "REP"."COAPPLICANTNAME" AS "COAPPLICANTNAME", "REP"."COMPANYNAME" AS "COMPANYNAME", "REP"."ISEINVOICE" AS "ISEINVOICE", "REP"."ISDONATE_INVOICE" AS "ISDONATE_INVOICE", "REP"."DRM_CREATEDDATE" AS "DRM_CREATEDDATE" FROM "FOREST"."REP" "REP"

 

我再加入一个有主键的表进行对比,可以看到有主键的表的定义如下。

我们把没有主键的<EntitySet>照着上面这个节点进行更改:删除<DefiningQuery>节点,将store:Schema=”FOREST”更改为Schema=”FOREST”。这样我们就可以对之前没有设置主键的表进行更新、删除以及插入操作了。

无主键的表SSDL定义其实更像是视图,我有一点不明的是store:这个命名空间的作用是什么,为什么只是删除<DefiningQuery>不行,还需要将Schema属性的store命名空间删除才可以。以上都是我还不明白的地方,只是作为一个解决方案,它确实简单可行。

转载于:https://www.cnblogs.com/JinvidLiang/p/4668345.html

你可能感兴趣的文章
再破博客园登录
查看>>
Entity Framework在WCF中序列化的问题
查看>>
OpenCL快速入门
查看>>
选择生成日报表,月报表,年报表
查看>>
使用位操作
查看>>
Babelfish(二分)
查看>>
JS 中如何判断 undefined 和 null
查看>>
ftk学习记录(一个进度条文章)
查看>>
log4j直接输出日志到flume
查看>>
非正确使用浮点数据由项目产生BUG讨论的问题
查看>>
PHP5中的stdClass
查看>>
IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
查看>>
四种可变交流swap方法
查看>>
Lucene中的 Query对象
查看>>
二分基础
查看>>
物流英语
查看>>
[iOS]iOS8可用的识别用户方式(idfa、UUID、idfv)
查看>>
hdu1507--二分图最大匹配
查看>>
【数据结构与算法】二叉树深度遍历(递归)
查看>>
iOS开发--基于AFNetWorking3.0的图片缓存分析
查看>>