我試圖設置從數據庫檢索。 我有EF(實體框架)對象emUser
和從emUser繼承的普通類User
,但添加了一些額外的功能。從實體框架對象的繼承
public class User : emUser
{
#region Properties
public string Username
{
get { return Email; }
}
public string FullName
{
get { return FirstName + " " + LastName; }
}
#endregion
}
public partial class emUser : EntityObject
{
[code ...]
}
由於某些原因,雖然User從emUser繼承我不能明確地轉換它們。 我正在使用的代碼:
List<User> returnUsers = new List<User>();
var users =
(from u in edm.UserSet.OfType<emUser>()
select u);
if (users != null)
{
foreach (emUser user in users)
{
User newUser = (User)user;
returnUsers.Add(newUser);
}
}
return returnUsers;
我能爲User
一個emUser包裝,但我會在每次我更改emUser時間來改變它。我想使用User
來區分技術服務層和域層中使用的類。
我得到這樣的錯誤消息:
{System.InvalidCastException: Unable to cast object of type 'Services.emUser' to type 'Users.User'. at Services.DatabaseController.GetUsers() in [file path]:line 412}
爲什麼我不能轉換emUser到用戶?
甲'User'是一個'emUser',但一個'emUser'不是'User'。你不能那樣做。 – SLaks
你爲什麼期望這種低調行事? EF只能返回EMUser對象 - 它知道的對象。對於它的價值,我認爲模型層和服務層具有並行數據結構是一個壞主意,並且是對繼承的不好使用。服務層與其下面的層進行通信設計並不錯。如果您需要使用不屬於該圖層的模型類添加功能,請正交。 (使用將模型對象作爲參數的「常規」函數或在服務層定義的擴展方法。) – millimoose