我发现的EF5 Table Per Type示例,例如这个使用[Table("tablename")]
属性将类标记为定义表。
当我添加此属性时,我收到错误:
Error 1 The type or namespace name 'TableAttribute' could not be found (are you missing a using directive or an assembly reference?) E:\EShared\Syrius6\syrius_syrius\SBD.Syrius.DomainClasses\Classes.cs 599 6 DomainClasses
Error 2 The type or namespace name 'TableAttribute' could not be found (are you missing a using directive or an assembly reference?) E:\EShared\Syrius6\syrius_syrius\SBD.Syrius.DomainClasses\Classes.cs 599 6 DomainClasses
我有线
using System.ComponentModel.DataAnnotations;
在我的命名空间中
我正在使用框架 4,因为我希望应用程序在 Windows XP 上运行。
[更新] 我在这里查看了标记为可能重复的链接,因此添加了对 System.Data.Linq 的引用和 using System.Data.Linq
错误消息现在是
Error 1 The type or namespace name 'TableAttribute' could not be found (are you missing a using directive or an assembly reference?) E:\EShared\Syrius6\syrius_syrius\SBD.Syrius.DomainClasses\Classes.cs 599 6 DomainClasses
Error 2 Using the generic type 'System.Data.Linq.Table<TEntity>' requires 1 type arguments E:\EShared\Syrius6\syrius_syrius\SBD.Syrius.DomainClasses\Classes.cs 599 6 DomainClasses
重要的是,我希望我的代码在 Windows XP 上运行,并且可能重复的第二个答案需要框架 4.5
【更新】代码如下;
namespace SBD.Syrius.DomainClasses
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Data.Linq;
[Table("Product")]
public class Product : LoggedEntity
{
[Required]
public string BuyUnitMeasure { get; set; }
[Required]
public Decimal BuyUnitQuantity { get; set; }
[Required]
public String Code { get; set; }
[Required]
public string Name { get; set; }
[Required]
public String SellUnitMeasure { get; set; }
[Required]
public Decimal SellUnitQuantity { get; set; }
public virtual Template Template { get; set; }
[Required]
public string UnitMeasure { get; set; }
public override string ToString()
{
return !string.IsNullOrEmpty(this.Name) ? this.Name : "Products";
}
}
public abstract class LoggedEntity
{
public int Id { get; set; }
public Guid RowId { get; set; }
[ConcurrencyCheck]
public int RowVersionId { get; set; }
public int SourceSiteNumber { get; set; }
}
}
[更新]
我更正了使用 System.Data.Linq.Mapping;
现在我的错误是
System.Data.Linq.Mapping.TableAttribute' does not contain a constructor that takes 1 arguments
[更新]
我还查看了建议的重复问题的不被接受的答案。这是使用 System.ComponentModel.DataAnnotations 但这需要框架 4.5,我认为我不能使用它,因为它不会在 Windows XP 上运行,我需要在 XP 上运行。
[更新]
我正在 Windows 7 上开发,但应用程序需要在 XP 上运行。我看到了我试图遵循的示例 这里再次 使用 Framework 4.1 Fluent
我的问题是我可以在 EF5 上使用 TPT 在 Windows XP 上运行吗?如果是这样,怎么做?