SubSonic、SimpleRepository 和实体接口

发布于 2024-08-21 12:04:35 字数 616 浏览 5 评论 0原文

首先,我想为我的英语道歉,而不是我最强的一面。

对于这个问题。在我当前的项目中,我有与实体的接口,因此我可以在我的头部实体中使用 Subsonic 属性,并且我希望将来能够无缝切换 O/R 映射器。 无论如何,当我尝试使用我的接口和 SimpleRepositorys 类(例如 Single<>、All>> 时,我收到错误)等等。 我知道为什么会收到错误消息,但我需要帮助才能找到解决该错误的方法。 错误信息:

System.InvalidCastException:无法将“SubSonic.DomainObjects.User”类型的对象转换为“Core.DomainObjects.IUser”类型。

代码:
公共 IUser FindById(int id) {
var user = _repository.Single(x => x.Id == id);
返回(IUser)用户;
正如

您所看到的,当我想要添加数据时,我尝试使 User 到 IUser 的顺序起作用,但没有成功。我该怎么做才能使这项工作成功?

谢谢你,
蒂米

Firstly, I want to apologize for my English, not my strongest side.

To the question. In my current project, I have interfaces to my entities so I can use Subsonic attributes at my head entites and I want to be able to seamlessly switch O/R mapper in the future.
Anyway, I get an error when I try to use my interfaces and SimpleRepositorys classes like Single<>, All<> and so on.
I know why I get the error message but I need help to find a way to get around it.
Error message:

System.InvalidCastException: Unable to cast object of type 'SubSonic.DomainObjects.User' to type 'Core.DomainObjects.IUser'.

Code:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}

As you can see I have tried to make User to IUser order to work when I want to add data, but without success. What can I do to make this work?

Thank you,
Timmie

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只为一人 2024-08-28 12:04:35

我不认为亚音速是这种情况下的问题。此代码将起作用:

namespace Core.Objects
{
    public interface ICustomer
    {
        int CustomerID { get; set; }
        string Name { get; set; }
    }

}

实际类的代码:

namespace Business.Entities
{
        public class Customer: Core.Objects.ICustomer
        {
            public int CustomerID { get; set; }

            [SubSonicStringLength(50)]
            public string Name { get; set; }
        }
}

最后,获取客户的函数:

private static ICustomer CustomerByID(int id)
{
      var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
      var customer = repos.Single<Customer>(c => c.CustomerID == id);

      return (ICustomer) customer;
}

I don't think subsonic is the problem in this situation. This code will work:

namespace Core.Objects
{
    public interface ICustomer
    {
        int CustomerID { get; set; }
        string Name { get; set; }
    }

}

Code for the actual class:

namespace Business.Entities
{
        public class Customer: Core.Objects.ICustomer
        {
            public int CustomerID { get; set; }

            [SubSonicStringLength(50)]
            public string Name { get; set; }
        }
}

And finally, the function to get the customer:

private static ICustomer CustomerByID(int id)
{
      var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
      var customer = repos.Single<Customer>(c => c.CustomerID == id);

      return (ICustomer) customer;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文