那不是它......無法遍歷集合
問題在於我如何使用EF Customer模型。
YeagerTechEntities的定義()如下:
namespace YeagerTechModel
{
public class YeagerTechEntities : ObjectContext
{
public YeagerTechEntities();
public YeagerTechEntities(EntityConnection connection);
public YeagerTechEntities(string connectionString);
public ObjectSet<Customer> Customers { get; }
public void AddToCustomers(Customer customer);
}
}
DbContext.Customers的定義如下:
public ObjectSet<Customer> Customers { get; }
我的我的服務內的方法被定義如下:
public IEnumerable<Customer> GetCustomers()
{
YeagerTechEntities DbContext = new YeagerTechEntities();
IEnumerable<Customer> customer = DbContext.Customers.Where(p => p.City.StartsWith("A"));
上面的代碼給了我下面的設計時編譯錯誤。
Cannot implicity convert type 'System.Linq.IQueryable<YeagerTechModel.Customer> to System.Collections.Generic.IEnumerable<YeagerTechWcfservice.Customer>'
這部分是因爲我有以下DataContract在我的界面,供有YeagerTechWcfservice命名空間中的web服務。
[DataContract]
public class Customer
{
[DataMember]
public Int16 CustomerID { get; set; }
[DataMember]
public String Email { get; set; }
[DataMember]
public String Company { get; set; }
[DataMember]
public String FirstName { get; set; }
[DataMember]
public String LastName { get; set; }
[DataMember]
public String Address1 { get; set; }
[DataMember]
public String Address2 { get; set; }
[DataMember]
public String City { get; set; }
[DataMember]
public String State { get; set; }
[DataMember]
public String Zip { get; set; }
[DataMember]
public String HomePhone { get; set; }
[DataMember]
public String CellPhone { get; set; }
[DataMember]
public String Website { get; set; }
[DataMember]
public String IMAddress { get; set; }
[DataMember]
public DateTime CreatedDate { get; set; }
[DataMember]
public DateTime? UpdatedDate { get; set; }
}
如果我註釋掉上面的接口類,設計時編譯錯誤消失認爲它現在使用類,其中有我的客戶對象定義我YeagerTechModel類。我認爲這是我想要的正確行爲。但是,當我嘗試運行我的服務時,我無法調用Getcustomers方法,因爲它旁邊有一個紅色的X.
我覺得我需要告訴我的Web服務使用我的YeagerTechModel Customer類作爲界面中的DataContract,但不知道該怎麼做。這是我在YeagerTechModel項目(這是一個單獨的項目,但與YeagerTechWcfService項目相同的解決方案)中創建的Customer類。
如何解決此問題,我的方法將在我的GetCustomers webservice方法中正確轉換正確的對象?
[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}
public class CustomerMetaData
{
public object CustomerID { get; set; }
[Required]
[StringLength(50)]
[DataType(DataType.EmailAddress)]
public object Email { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Company { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object FirstName { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object LastName { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Address1 { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object Address2 { get; set; }
[StringLength(50)]
[DataType(DataType.Text)]
public object City { get; set; }
[StringLength(2)]
[DataType(DataType.Text)]
public object State { get; set; }
[StringLength(10)]
[DataType(DataType.Text)]
public object Zip { get; set; }
[StringLength(12)]
[DataType(DataType.PhoneNumber)]
public object HomePhone { get; set; }
[StringLength(12)]
[DataType(DataType.PhoneNumber)]
public object CellPhone { get; set; }
[StringLength(100)]
[DataType(DataType.Url)]
public object Website { get; set; }
[StringLength(50)]
[DataType(DataType.EmailAddress)]
public object IMAddress { get; set; }
[Required]
[DataType(DataType.Date)]
public object CreatedDate { get; set; }
[DataType(DataType.Date)]
public object UpdatedDate { get; set; }
}
不是這樣......問題出在我關於命名空間的全文。以下語句會得到相同的錯誤。 IEnumerable customer = DbContext.Customers.Where(p => p.CustomerID> 0).ToList();如果將左側更改爲IEnumerable 客戶,則設計時編譯錯誤消失。我需要評估一些,然後發佈...... –
sagesky36
就像我之前說過的,我無法使用SCT測試客戶端在我的Web服務中調用此方法,因爲它上面有一個紅色的X.它說「WCF測試客戶端不支持此操作,因爲它使用YeagerTechModel.Customer類型[]」。 – sagesky36
那麼,如何使用YeagerTechWcfService命名空間而不是YeagerTechModel命名空間?如果我使用YeagerTechWcfService命名空間,則會出現設計時編譯錯誤。如果我使用YeagerTechModel命名空間,則設計時編譯錯誤消失,但由於上述註釋無法調用該方法。 – sagesky36