2011-10-06 59 views
3

我有一个问题,EF 4.1的EntityType 'URI' 没有定义

这里是我的实体和上下文键:

public class PasmISOContext : DbContext 
{ 
    public DbSet<Avatar> Avatars { get; set; } 
    public DbSet<User> Users { get; set; } 
} 

namespace PasmISO.Domain 
{ 
    public class User 
    { 
     [Key] 
     public string Login { get; set; } 
     public string Email { get; set; } 
     public string Password { get; set; } 
     public Avatar Avatar { get; set; } 
    } 
} 

namespace PasmISO.Domain 
{ 
    public class Avatar 
    { 
     [Key] 
     public int Id { get; set; } 
     [Required] 
     public Uri Link { get; set; } 
    } 
} 

在MVC控制器我有

PasmISOContext db=new PasmISOContext(); 
if (db.Avatars.Count()==0) 
{ 
    db.Avatars.Add(new Avatar() { Link = new Uri("http://www.google.com/somelinktojpg") }); 
} 

当我运行我的代码,我得到异常:

One or more validation errors were detected during model generation: 

    System.Data.Edm.EdmEntityType: : EntityType 'Uri' has no key defined. Define the key for this EntityType. 
    System.Data.Edm.EdmEntitySet: EntityType: EntitySet �Uris� is based on type �Uri� that has no keys defined. 

有关如何解决此问题的任何想法?

+1

尝试使用字符串而不是Uri对象 –

回答

3

这听起来像EF不知道如何处理Uri类型;它没有SQL映射。你最好的选择是将Uri的链接属性改为字符串。

+4

您可以将Uri属性包裹在底层数据库字符串的[NotMapped]周围,以便在类使用中作为Uri对象使用仍然很方便,但仍然可以与EF一起良好存储。 –

相关问题