加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 十进制为主键在Dev(Win7 / 64bit)中工作但在生产中不起

发布时间:2020-12-14 02:22:18 所属栏目:Windows 来源:网络整理
导读:我的 Windows服务是一个.NET应用程序.该服务依赖于我使用EF 4.3 Code First的数据访问.我的服务运行并尝试访问数据时收到以下错误. Error occured in FullPurgeAndReplace(): System.InvalidProgramException: Common Language Runtime detected an invalid
我的 Windows服务是一个.NET应用程序.该服务依赖于我使用EF 4.3 Code First的数据访问.我的服务运行并尝试访问数据时收到以下错误.

Error occured in FullPurgeAndReplace():
System.InvalidProgramException: Common Language Runtime detected an
invalid program. at
System.Data.Entity.DynamicProxies.MOMInventoryItem_3ED5D5176D2C03867C62DD8E4381A882350CFD9CD931F3CD551623A6EF5C4D8E.set_Id(Decimal
) at lambda_method(Closure,Shaper ) at
System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func2
constructEntityDelegate,EntityKey entityKey,EntitySet entitySet)
at lambda_method(Closure,Shaper ) at
System.Data.Common.Internal.Materialization.Coordinator
1.ReadNextElement(Shaper
shaper) at
System.Data.Common.Internal.Materialization.Shaper1.SimpleEnumerator.MoveNext()
at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source) …
more removed

在相同的机器上我有一个依赖于相同数据访问项目的Web应用程序,并且运行没有问题.对于IIS中的该网站,我确实为相应的应用程序池检查了启用32位应用程序.

我研究了这个问题,发现它可能与错误中的实体(MOMInventoryItem)有一个十进制主键有关.我没有选择,因为我正在与现有系统集成.然而,这应该是一年多以前的known issue with EF 4.0,我希望它现在可以解决.

以下是我的实体的一些代码:

[Table("STOCK")]
public class MOMInventoryItem
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.None),Column("STOCK_ID")]
    public virtual decimal Id { get; set; }

同样,这可以通过IIS中托管的MVC应用程序正常工作,但在同一台Windows 2008 R2服务器上作为Windows服务失败.它也适用于我的DEV机器(Win7 / VS11).我的问题是什么,我可以永久地解决它还是解决它?

一如往常,在可能的情况下,非常感谢和回报.

解决方法

尝试将启动项目设置为目标32位,这应该可以防止明显的64位问题.并解释为什么它与MVC运行良好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读