1

我有一个类实体框架代码第一次铸造列

public class Foo 
{ 
    public int UserId { get; set; } 
} 

,我正在使用的代码第一流利映射到这个映射到数据库。

Property(i => i.UserId) 
      .HasColumnName("userno"); 

唯一的问题是userno实际上是数据库中的char(10)。我该如何着手铸造或转换这种类型?因为我目前得到这个错误。

“Foo”上的'UserId'属性无法设置为'String'值。 您必须将此属性设置为“Int32”类型的非空值。

感谢

回答

3

实体框架不具有映射类型转换的任何支持,以便在您的方案是唯一有效的对应的属性是:

public class Foo 
{ 
    public string UserId { get; set; } 
} 

如果你想int财产,以及你必须做的:

public class Foo 
{ 
    public string UserId { get; set; } 

    public int UserIntId 
    { 
     get { return Int32.Parse(UserId); } 
     set { UserId = value.ToString(); } 
    } 
} 

并将此添加到您的映射:

Ignore(i => i.UserIntId); 

您可以使用UserId属性的辅助功能,但请注意,辅助功能也会影响您的映射实际看到该属性。如果没有,则根本不会映射UserId

+0

想到这可能是这样的情况:( –