相关疑难解决方法(0)

有趣的Linq to SQL常见的基类行为

这是一个关于InvalidOperationException的问题,消息类成员X未映射.

我们的一个系统对于每个具有框架版本3.5的LinqToSql实体具有相同的基本实体.

我遇到了一个非常奇怪的问题,我开始研究它.我做了一个非常小的项目,以便能够更轻松地本地化问题.

实体基类

public abstract class EntityBase
{
    public virtual long ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

DataContext和Entity

[Database(Name = "TestDatabase")]
public class EntitiesDataContext : DataContext
{
    public EntitiesDataContext() :
        base(Settings.Default.TestDatabaseConnectionString, new AttributeMappingSource())
    {
    }
}

[Table(Name = "dbo.MyEntity")]
public class MyEntity : EntityBase
{
    private long _EntityID;

    [Column(Name = "EntityID", Storage = "_EntityID")]
    public override long ID
    {
        get { return _EntityID; }
        set { _EntityID = value; }
    }

    [Column] public string …
Run Code Online (Sandbox Code Playgroud)

c# cil linq-to-sql

9
推荐指数
1
解决办法
2104
查看次数

LinqToSql和抽象基类

我有一些linq实体继承了这样的东西:

public abstract class EntityBase { public int Identifier { get; } }

public interface IDeviceEntity { int DeviceId { get; set; } }

public abstract class DeviceEntityBase : EntityBase, IDeviceEntity
{
  public abstract int DeviceId { get; set; }
}

public partial class ActualLinqGeneratedEntity : DeviceEntityBase
{
}
Run Code Online (Sandbox Code Playgroud)

在通用方法中,我使用以下命令查询DeviceEnityBase派生实体:

return unitOfWork.GetRepository<TEntity>().FindOne(x => x.DeviceId == evt.DeviceId);
Run Code Online (Sandbox Code Playgroud)

其中TEntity有一个绑定,它是一个DeviceEntityBase.此查询始终失败,并出现InvalidOperationException,并显示消息"类成员DeviceEntityBase.DeviceId未映射".即使我在抽象基类中添加了一些映射信息

[Column(Storage = "_DeviceId", DbType = "Int", Name = "DeviceId", IsDbGenerated = false, UpdateCheck = UpdateCheck.Never)]
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

6
推荐指数
2
解决办法
1943
查看次数

标签 统计

c# ×2

linq-to-sql ×2

cil ×1