相关疑难解决方法(0)

我应该使用实体框架4.1和MVC3启用还是禁用动态代理?

有人可以提供一些建议或指出一些可以帮助做出这个决定的博客/文章吗?代理对我来说似乎很陌生,我对使用它们犹豫不决.我喜欢通过在我的模型中使用虚拟属性来控制延迟加载的能力,但这几乎是我能看到的所有好处.我的应用程序是一个简单的MVC Web应用程序,当实体遇到更改状态时,我不需要将任何挂钩连接到上下文中.

无论如何,这是我现在非常有限的利弊列表,让我知道如果我没有任何这个.

优点

  • 在"保存"或"更新"中,我与"Apply'Changes"无缝对接
  • 延迟加载配置非常简单.

缺点

  • 从来没有为我的实体使用代理,这是一种方法的改变,对我自己和团队成员来说似乎不舒服.
  • 调试很尴尬.
  • 如果我想要序列化/反序列化,则需要额外的代码
  • 在"保存"或"更新"时,代理必须是从上下文中检索的同一对象.

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

68
推荐指数
2
解决办法
5万
查看次数

Asp.Net Web API错误:'ObjectContent`1'类型无法序列化内容类型'application/xml的响应主体; 字符集= UTF-8'

最简单的例子,我得到一个集合并尝试通过Web API输出:

// GET api/items
public IEnumerable<Item> Get()
{
    return MyContext.Items.ToList();
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:


'System.Data.Objects.ObjectQuery`1 [Dcip.Ams.BO.EquipmentWarranty]' 类型的对象 无法转换为类型
'System.Data.Entity.DbSet`1 [Dcip.Ams.BO.EquipmentWarranty]'

这是与新代理相关的一个非常常见的错误,我知道我可以通过设置来修复它:

MyContext.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)

但这违背了我想要做的很多事情的目的.有没有更好的办法?

entity-framework entity-framework-4 asp.net-web-api

35
推荐指数
5
解决办法
4万
查看次数

始终有错误"ObjectContent 1类型无法序列化响应正文..."

我使用Web api从数据库中检索数据.我只有一个表"tblMessage",并希望从该表中获取数据.

我设置了所有内容但是当我运行网站时.错误总是说

'ObjectContent`1'类型无法序列化内容类型'application/xml的响应主体

我在stackoverflow上阅读了一些帖子,说明错误可以通过告诉浏览器以json格式输出数据来修复.之后,错误就变成了

'ObjectContent`1'类型无法序列化内容类型'application/json的响应主体

我已尝试过以下帖子中的所有解决方案,但他们没有解决问题(浏览器报告相同的错误)

Web API错误:'ObjectContent`1'类型无法序列化内容类型的响应正文

无法序列化内容类型的响应正文

Web API错误:'ObjectContent`1'类型无法序列化内容类型的响应正文

这个错误究竟是什么?

public interface IMessage
{
    IQueryable<Message> GetAll();
}

public class Message
{
    [Key]
    public int i_StmID { get; set; }
    public string vch_MsgString { get; set; } 
}

public class EFDBContext : DbContext
{
    public DbSet<Message> Message { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Message>().ToTable("tblMessage");
    }
}

public class MessageRepository : IMessage
{
    private EFDBContext context = new EFDBContext();

    public IQueryable<Message> GetAll()
    {
        return …
Run Code Online (Sandbox Code Playgroud)

c# serialization entity-framework json.net asp.net-web-api

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