0

對於我正在研究的項目,我們編寫了一個便攜式PCL以包含將在多個項目之間共享的模型和其他代碼。數據訪問層位於解決方案的另一個項目中,但我想在PCL中使用EF數據註釋以符合我們當前的約定。我在System.ComponentModel.DataAnnotations命名空間中的數據註釋工作得很好,但未找到System.ComponentModel.DataAnnotations.Schema註釋。如何在便攜式類庫中爲EF Core添加模式註釋

該引用被添加,我甚至嘗試重新添加EF到PCL,但我沒有任何運氣。我讀了另一篇文章,他們同時使用兩個命名空間遇到了一個問題,但我甚至無法獲得.Schema本身的工作。

這裏是我的代碼看起來像一個例子:

using Newtonsoft.Json; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; //VS shows that this is not being used 

namespace Shared.Models.User 
{ 
    public class BaseUser 
    { 
     [JsonProperty("id")] 
     [Key] 
     [Column("UserId", Order = 1)] // ***ColumnAttribute not found  
     public Guid Id { get; set; } 
     ... 
     [JsonProperty("fullName")] 
     [NotMapped] // ***NotMappedAttribute not found 
     public string FullName => String.Format("{0} {1}", FirstName, LastName); 
     ... 
    } 
} 

的PCL的目標是.NET 4.5,對.NET核心1.0,UWP和Xamarin平臺。在Nuget Package Manager中,它顯示前面提到的兩個名稱空間都已添加到項目中,但它們不會顯示在解決方案資源管理器中。我曾嘗試清理項目,構建和恢復軟件包,但仍然沒有任何結果。我沒有看到任何理由,這不應該在便攜式PCL中工作,但我錯過了什麼?

回答

0

是否安裝System.ComponentModel.Annotations NuGet軟件包的幫助?如果沒有,他們可能只是不適用於該類型的項目。

+0

不,這根本沒有幫助。這是現在正在工作的那個,但是System.ComponentModel.Annotations.Schema是我遇到的問題之一。這也是我的想法,但想看看是否有其他人遇到過這種情況。 – dzlp

+0

確認。您需要定位至少[.NET標準](https://docs.microsoft.com/en-us/dotnet/standard/net-standard)1.3(沒有等效的PCL配置文件) – bricelam