首先,我在没有运气的情况下搜索了这个解决方案。
这是我的设置。
我有2个项目。
acme.data
acme.WebApi
acme.data是我所有的Code First Classes所在的地方。
在以下命名空间中 acme.data.models我有一个Office对象(其属性如OfficeName,Address等)
我使用命名空间acme.WebApi.Models在acme.data.Models中的Entity类上添加扩展
所以我有acme.WebApi.Models.Office(其中包含GetFormattedAddress等方法)。
acme.WebApi.Models.Office继承自acme.data.Models.Office,以便我可以从acme.WebApi访问基本acme.data.Models.Office和扩展的acme.WebApi.Models.Office。 Models.Office
例如,
acme.WebApi.Models.Office office = myOffice.GetFormattedAddress();
或
acme.WebApi.Models.Office office = myOffice.OfficeName();
这部分效果很好。 然而,
当我第一次尝试加载像这样的办公室时。
acme.WebApi.Models.Office office = db.Offices.FirstOrDefault();
我收到一个编译时错误,说它无法隐式转换类型acme.data.Models.Office到acme.WebApi.Models.Office
所以我添加了“as acme.WebApi.Models.Office”将acme.data.Models.Office首先转换为acme.WebApi.Models.Office,就像这样。
acme.WebApi.Models.Office office = db.Offices.FirstOrDefault() as acme.WebApi.Models.Office
这允许构建2个项目,但是当我运行该行代码时,其设置办公室为Null。
所以我尝试以不同的方式强制转换Office对象。
acme.WebApi.Models.Office office = (acme.WebApi.Models.Office)db.Offices.FirstOrDefault();
它允许我构建两个项目,但在运行时我得到这个错误。 无法将“System.Data.Entity.DynamicProxies.Office_D07C530EAB71F08D12EDDE4E5A80ECBE23A75424CDCDF1DC799A05A37B3032A7”类型的对象强制转换为“acme.WebApi.Models.Office”。
有没有其他方法我应该将acme.data.Models.Office转换或转换为acme.WebApi.Models.Office,这不会让我不得不为每个Entity类制作转换方法?
谢谢你的帮助。
答案 0 :(得分:0)
你为什么不回复acme.Data.Models.Office?
否则你可能会想要一些其他的共享类,并返回共享类。
acme.Data.Models.Office : acme.Shared.Model.Office
否则你要么