1

我在 MVC 3 下,编写了一些用于 Web 服务的类,它们也作为实体在应用程序中使用。一切正常,但是当框架将实体生成到数据库中时,所有 SoapHeader 属性也存储为表字段,即:

  • 编码必须了解
  • 编码必须理解12
  • 必须了解
  • 演员
  • ...

当然这是因为MyEntityClass的基类是System.Web.Services.Protocols.SoapHeader

我的问题是:如何避免在不手动操作的情况下将soap头属性创建到数据库中(如NotMapped属性)?

这是我的代码

// MyEntityClass.cs
public class MyEntityClass : System.Web.Services.Protocols.SoapHeader
{
    // Attributes...
}

// MyService.asmx.cs
public class MyService : System.Web.Services.WebService
{
    public MyEntityClass myClass; // Used as header from the client

    [WebMethod]
    [System.Web.Services.Protocols.SoapHeader("myClass")]
    public string Hello()
    {
    }
}

多谢你们!

4

1 回答 1

1

因此,我发布了自己的解决方案,可能对其他人有用。我刚刚在我的实体(DbContect)类中使用了 OnModelCreating 方法,如下所示:

using System.Data.Entity;
namespace Application.Models
{
    public class Entities : DbContext
    {
        public DbSet<MyEntityClass> MyEntityClass { get; set; }
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Ignore<System.Web.Services.Protocols.SoapHeader>();
    }
}
于 2012-12-18T09:26:03.340 回答