Insight.Database是否继承[Schema]注释?

时间:2016-10-21 13:58:17

标签: inheritance insight.database

所以我想我在我的数据层中尝试一些有点聪明/愚蠢的东西。我使用的是Jon Wagner的Insight.Database,但我的大多数表都有一组CRUD操作。所以我想,为什么不这样做:

public interface IDataInterface<T>
{
    Task<T> SelectAsync(int id);

    Task<IEnumerable<T>> SelectAsync();

    Task<int> UpsertAsync(T obj);

    Task<bool> UpsertManyAsync(IEnumerable<T> list);

    Task<bool> DeleteAsync(int id);

    Task<bool> DeleteManyAsync(IEnumerable<T> list);
}

然后我想我可以这样做:

[Sql(Schema  = "Clients")]
public interface IClientDataInterface : IDataInterface<Client>
{

}

使用与客户端架构中的Clients表相关的所有存储过程。

但是,在我最终点击paydirt之前,这并没有通过InnerExceptions工作,我得到了以下错误 -

  

InnerException = {&#34;存储过程&#39;选择&#39;不存在。&#34;}

即使Clients.Select肯定存在。

这向我表明基接口(没有[Sql]注释)的默认值为[Sql(Schema =&#34; dbo&#34;)],它是继承的,并覆盖任何后来的注释。

这是对的吗?有没有办法禁用基本架构,如果它是正确的?如果不是,那是怎么回事?

1 个答案:

答案 0 :(得分:0)

有点迟到了,但是......

不。 Insight不会继承[Sql]注释。

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface)]

我想这只是其中一个不会以我们希望的方式运作的好小动作。