相关疑难解决方法(0)

EF Code First 4.1根本不支持nvarchar(max)?

我花了相当多的时间来解决这个问题,但仍然无法弄清楚为什么EF团队使用Code First让生活如此艰难.

以下是一些示例:

我的POCO:

我想要的东西看起来像:

public class Post
{
     public int Id {get; set;}
     public string Text {get; set;}
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Post>()
        .Property(p => p.Text)
        .HasColumnType("nvarchar(max)");   
}
Run Code Online (Sandbox Code Playgroud)

唯一有效的方法:

public class Post
{
     public int Id {get; set;}

     [StringLength(4000)]
     public string Text {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

问题是,在第一种情况下,我尝试插入它给我的任何东西:Validation failed for one or more entities第二种情况不适合我的商业模式.

我是唯一有这个问题的人吗?我该如何处理这件事?

orm entity-framework ef-code-first entity-framework-4.1

21
推荐指数
1
解决办法
1万
查看次数

Entity Framework Code First中有效的原始属性是什么?

当我尝试将列映射到我的模型类中的char数据类型时,我收到一个错误:

属性'[ColumnName]'不是'[ClassName]'类型的声明属性.使用Ignore方法或NotMappedAttribute数据批注验证是否未从模型中显式排除该属性.确保它是有效的原始属性.

EF Code First的有效原始类型是什么?

c# entity-framework

11
推荐指数
1
解决办法
4332
查看次数

代码第一列,类型为char(36)

所以我有一个UserProfile模型类作为SimpleMembership的一部分.在其中我需要存储另一个类型的DB中存在的遗留标识符char(36).我喜欢把它改成像一个独特的标识更合理的东西,但这超出了今天的活动范围.

我当前的注释创建了一个列 nvarchar(36)

[StringLength(36)]
public string UserIdentifier{ get; set; }
Run Code Online (Sandbox Code Playgroud)

我想要一列char(36)代替.这可能吗?

entity-framework data-annotations entity-framework-5

9
推荐指数
2
解决办法
5619
查看次数

为什么这个LinQ查询不像chars?

我有一个LINQ查询,它抓取它需要的所有数据并将其合并到一个数据传输对象中,一切正常但除非它将一个DTO的成员(这是一个char)设置为char值时抛出查询异常...

mscorlib.dll中发生了未处理的"System.ServiceModel.FaultException"类型异常

无法创建"System.Char"类型的常量值.在此上下文中仅支持基元类型或枚举类型.

请参阅下面的简化查询:

var result = (from c in db.Foster_Carers
              where c.foster_carer_id == id
              join fc in db.Individual_Carers on c.first_carer_id equals fc.individual_carer_id
              select new FosterCarerPersonalInfoDTO
              {
                  carer_title = fc.title,
                  carer_forenames = fc.forename,
                  carer_surname = fc.surname,                                
                  carer_gender = 'm'
              }).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

将性别设置为'm'只是不起作用,从语法上来说它没关系,只是在执行查询时不行!可能是什么问题?

c# linq linq-to-sql

2
推荐指数
1
解决办法
3472
查看次数