微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – ASP.NET MVC4 Razor on Mono EF 6 DateTime崩溃

我正在尝试使用Mono运行应用程序.它在IIS上运行正常,但我希望它在Mono上运行.但它总是把它扔给我:

The ‘CreateDate’ property on ‘Article’ Could not be set to a ‘System.String’ value. You must set this property to a non-null value of type ‘System.DateTime’.

事实是抛出它的地方是这样的:

public Article[] Select(int number)
        {
            return DbContextProvider.Current.Set<Article>()
                .OrderByDescending(n => n.CreateDate)
                .Take(number)
                .ToArray();
        }

SystemString没有任何用处.实际上,它转换为字符串的唯一地方是:

@using BaseSite.Extensions.DateTimeExtensions
@model Classic.Views.Home.Articles.Articleviewmodel

<div class="article-wrapper">
    <div class="article-title">
        @Html.ActionLink(Model.Title,"Index","Articles",new RouteValueDictionary{{"articleId",Model.ArticleId}},null)
    </div>
    @Html.Raw(Model.Text)
    <div class="article-data date">
        @Html.ActionLink(Model.UserId,"Profile",new RouteValueDictionary{{"userId",Model.UserId}},null),@Model.CreateDate.Format(true)
    </div>
</div>

错误在此之前被抛出.并且,它适用于IIS,只有在Mono上才会出现这样一个奇怪的错误.

数据库表布局是:

CREATE TABLE [dbo].[Articles](
    [ArticleId] [uniqueidentifier] NOT NULL,[UserId] [nvarchar](30) COLLATE sql_latin1_General_CP1_CI_AS NOT NULL,[CreateDate] [datetime2](7) NOT NULL,[Title] [nvarchar](50) COLLATE sql_latin1_General_CP1_CI_AS NOT NULL,[Text] [nvarchar](max) COLLATE sql_latin1_General_CP1_CI_AS NOT NULL,PRIMARY KEY CLUSTERED 
(
    [ArticleId] ASC
)WITH (PAD_INDEX = OFF,STATISTICS_norECOmpuTE = OFF,IGnorE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXtimage_ON [PRIMARY]

映射类:

using System;

namespace BusinessObjects.Articles
{
    public class Article
    {
        public Guid ArticleId { get; set; }
        public string UserId { get; set; }
        public DateTime CreateDate { get; set; }

        public string Title { get; set; }
        public string Text { get; set; }
    }
}

using System.Data.Entity;

namespace BusinessObjects.Articles
{
    public class ArticleMapper : IDbMapper
    {
        public void Map(DbModelBuilder modelBuilder)
        {
            var entity = modelBuilder.Entity<Article>();

            entity.HasKey(n => n.ArticleId);
            entity.Property(n => n.ArticleId).Isrequired();

            entity.Property(n => n.UserId).Isrequired().HasMaxLength(30);
            entity.Property(n => n.Title).Isrequired().HasMaxLength(50);
            entity.Property(n => n.Text).Isrequired().IsMaxLength();
        }
    }
}

是的我还有其他表与DateTime,他们都得到了这个错误.它们都在IIS(MS Stack)上正常运行,它只在Mono xsp4上出错.
有人可以提供任何帮助吗?我迷失了这种疲惫.

PS:我试过几乎所有的单声道版本,现在我在Mono git master 3.8.1(master / 38c3874),同样的东西有3.6,3.2.8等

解决方法

正如亚历山大·科普林格所提到的,似乎是Mono中“datetime2”的错误.通过从Mssql迁移到Postgresql来修复 – 它在计划中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐