Entity framework 无法创建类型为的常量值。仅使用基本类型
我读过其他一些帖子,但都没有帮助 CarPart是一个EF4 gened类Entity framework 无法创建类型为的常量值。仅使用基本类型,entity-framework,linq-to-sql,entity-framework-4,Entity Framework,Linq To Sql,Entity Framework 4,我读过其他一些帖子,但都没有帮助 CarPart是一个EF4 gened类 [EdmEntityTypeAttribute(NamespaceName="xxxx.Data.Domain.Model", Name="CarPart")] [Serializable()] [DataContractAttribute(IsReference=true)] public partial class CarPart : EntityObject { #region Factory Method
[EdmEntityTypeAttribute(NamespaceName="xxxx.Data.Domain.Model", Name="CarPart")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class CarPart : EntityObject
{
#region Factory Method
/// summary>
/// Create a new CarPart object.
/// </summary>
/// <param name="carPartId">Initial value of the CarPartId property.</param>
/// <param name="name">Initial value of the Name property.</param>
/// <param name="carPartTypeId">Initial value of the CarPartId property.</param>
public static CarPart CreateCarPart(global::System.Int32 carPartId, global::System.String name, global::System.Int32 carPartId)
{
CarPart carPart = new CarPart();
carPart.CarPartId = carPartId;
carPart.Name = name;
carPart.CarPartTypeId = carPartTypeId;
return carPart;
}
#endregion
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 CarPartId
{
get
{
return _CarPartId;
}
set
{
if (_CarPartId != value)
{
OnCarPartIdChanging(value);
ReportPropertyChanging("CarPartId");
_CarPartId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("CarPartIdId");
OnCarPartIdChanged();
}
}
}
private global::System.Int32 _CarPartId;
partial void OnCarPartIdChanging(global::System.Int32 value);
partial void OnCarPartIdChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String Name
{
get
{
return _Name;
}
set
{
OnNameChanging(value);
ReportPropertyChanging("Name");
_Name = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Name");
OnNameChanged();
}
}
private global::System.String _Name;
partial void OnNameChanging(global::System.String value);
partial void OnNameChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 CarPartTypeId
{
get
{
return _CarPartTypeId;
}
set
{
OnCarPartTypeIdChanging(value);
ReportPropertyChanging("CarPartTypeId");
_CarPartTypeId = StructuralObject.SetValidValue(value);
ReportPropertyChanged("CarPartTypeId");
OnCarPartTypeIdChanged();
}
}
private global::System.Int32 _CarPartTypeId;
partial void OnCarPartTypeIdChanging(global::System.Int32 value);
partial void OnCarPartTypeIdChanged();
#endregion
#region Navigation Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("xxxx.Data.Domain.Model", "FK_CarPartId", "Part")]
public EntityCollection<Part> Parts
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Part>("xxxxx.Data.Domain.Model.FK_CarPartId", "Part");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Part>("xxxx.Data.Domain.Model.FK_CarPartId", "Part", value);
}
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("xxxxx.Data.Domain.Model", "FK_CarPartTypeId", "CarPartType")]
public CarPartType CarPartType
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CarPartType>("xxxx.Data.Domain.Model.FK_CarPartTypeId", "CarPartType").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CarPartType>("xxxxx.Data.Domain.Model.FK_CarPartTypeId", "CarPartType").Value = value;
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<CarPartType> CarPartTypeReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CarPartType>("xxxx.Data.Domain.Model.FK_CarPartTypeId", "CarPartType");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CarPartType>("xxxxxx.Data.Domain.Model.FK_CarPartTypeId", "CarPartType", value);
}
}
}
#endregion
}
[EdmEntityTypeAttribute(NamespaceName=“xxxx.Data.Domain.Model”,Name=“CarPart”)]
[可序列化()]
[DataContractAttribute(IsReference=true)]
公共部分类CarPart:EntityObject
{
#区域工厂法
///摘要>
///创建一个新的CarPart对象。
///
///CarPartId房产的初始价值。
///Name属性的初始值。
///CarPartId房产的初始价值。
公共静态CarPart CreateCarPart(全局::System.Int32 carPartId,全局::System.String名称,全局::System.Int32 carPartId)
{
CarPart CarPart=新CarPart();
carPart.CarPartId=CarPartId;
carPart.Name=名称;
carPart.CarPartTypeId=CarPartTypeId;
返回卡帕特;
}
#端区
#区域基本属性
///
///没有可用的元数据文档。
///
[EdmScalarPropertyAttribute(EntityKeyProperty=true,IsNullable=false)]
[DataMemberAttribute()]
公共全局::System.Int32 CarPartId
{
收到
{
返回_CarPartId;
}
设置
{
如果(_CarPartId!=值)
{
oncarpartdchanging(值);
报告财产变更(“CarPartId”);
_CarPartId=StructuralObject.SetValidValue(值);
报告财产变更(“CarPartIdId”);
oncarpartdChanged();
}
}
}
私有全局::System.int32u CarPartId;
部分无效(全局::System.Int32值);
CarpartdChanged()上的部分空隙;
///
///没有可用的元数据文档。
///
[EdmScalarPropertyAttribute(EntityKeyProperty=false,IsNullable=false)]
[DataMemberAttribute()]
public global::System.String名称
{
收到
{
返回_Name;
}
设置
{
OnNameChanging(值);
报告财产变更(“名称”);
_Name=StructuralObject.SetValidValue(值,false);
报告财产变更(“名称”);
OnNameChanged();
}
}
私有全局::System.String\u名称;
部分void OnNameChanging(全局::System.String值);
部分无效OnNameChanged();
///
///没有可用的元数据文档。
///
[EdmScalarPropertyAttribute(EntityKeyProperty=false,IsNullable=false)]
[DataMemberAttribute()]
公共全局::System.Int32 CarPartTypeId
{
收到
{
返回_CarPartTypeId;
}
设置
{
OnCarPartTypeIdChanging(值);
ReportPropertyChange(“CarPartTypeId”);
_CarPartTypeId=StructuralObject.SetValidValue(值);
ReportPropertyChanged(“CarPartTypeId”);
OnCarPartTypeIdChanged();
}
}
私有全局::System.Int32_CarPartTypeId;
CarpartTypeIdChangeing上的部分无效(全局::System.Int32值);
CarpartTypeIdChanged()上的部分无效;
#端区
#区域导航属性
///
///没有可用的元数据文档。
///
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute(“xxxx.Data.Domain.Model”、“FK_CarPartId”、“Part”)]
公共实体集合部分
{
收到
{
return((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection(“xxxxx.Data.Domain.Model.FK_CarPartId”,“Part”);
}
设置
{
如果((值!=null))
{
((IEntityWithRelationships)this.RelationshipManager.InitializeRelatedCollection(“xxxx.Data.Domain.Model.FK_CarPartId”,“Part”,value);
}
}
}
///
///没有可用的元数据文档。
///
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute(“xxxxx.Data.Domain.Model”、“FK_CarPartTypeId”、“CarPartType”)]
公共CarPartType CarPartType
{
收到
{
返回((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference(“xxxx.Data.Domain.Model.FK_CarPartTypeId”,“CarPartType”).Value;
}
设置
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference(“xxxxx.Data.Domain.Model.FK_CarPartTypeId”,“CarPartType”)。Value=Value;
}
}
///
///没有可用的元数据文档。
///
[浏览属性(错误)]
[DataMemberAttribute()]
公共实体引用CarPartTypeReference
{
收到
{
return((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference(“xxxx.Data.Domain.Model.FK_CarPartTypeId”,“CarPartType”);
}
设置
{
如果((值!=null))
{
((IEntityWithRelationships)this.RelationshipManager.InitializeRelatedReference(“xxxxxx.Data.Domain.Model.FK_CarPartTypeId”,“CarPartType”,value);
}
}
}
#端区
}
下面是我的加入代码:
List<Parts> parts = _context.Parts.Where(p => p.PartId == partId).ToList();
List<CarParts> parts = _context.CarParts
.Join(parts, cp => cp.PartId, p => p.PartId, (cp, p) => cp).ToList();
List parts=\u context.parts.Where(p=>p.PartId==PartId.ToList();
列出零件=_context.CarParts
.Join(parts,cp=>cp.PartId,p=>p.PartId,(cp,p)=>cp.ToList();
错误:无法创建“Model.CarParts”类型的常量值。只有
中支持基元类型(“如Int32、字符串和Guid”)
这个背景
我试着看了看,但没能通过。我对LINQ to SQL有点陌生..做了很多但不是很多(主要是LINQ to Object),所以我对加入这个有点陌生。如果我理解正确,你想这样做:
internal class Db
{
public Db()
{
var parts = new List<Part>
{
new Part() {PartId = 1, PartName = "Part 1"},
new Part() {PartId = 2, PartName = "Part 2"},
};
Parts = parts.AsQueryable();
var carParts = new List<CarPart>
{
new CarPart() {CarPartId = 1, CarPartName = "Car Part 1.1", PartId = 1},
new CarPart() {CarPartId = 1, CarPartName = "Car Part 1.2", PartId = 1},
new CarPart() {CarPartId = 1, CarPartName = "Car Part 2.1", PartId = 2},
};
CarParts = carParts.AsQueryable();
}
public IQueryable<Part> Parts { get; set; }
public IQueryable<CarPart> CarParts { get; set; }
}
internal class CarPart
{
public int CarPartId { get; set; }
public string CarPartName { get; set; }
public int PartId { get; set; }
}
internal class Part
{
public int PartId { get; set; }
public string PartName { get; set; }
}
static void Main(string[] args)
{
Db db = new Db();
var result = from carPart in db.CarParts
join part in db.Parts on carPart.PartId equals part.PartId
select new {Part = part, CarPart = carPart};
var lambdaResult = db.CarParts.Join(db.Parts, part => part.PartId, caPart => caPart.PartId,
(carPart, part) => new {CarPart = carPart, Part = part});
foreach (var item in result)
{
Console.WriteLine(item.Part.PartName);
Console.WriteLine(item.CarPart.CarPartName);
}
Console.WriteLine("------------");
foreach (var item in lambdaResult)
{
Console.WriteLine(item.Part.PartName);
Console.WriteLine(item.CarPart.CarPartName);
}
}
我不知道DL类是什么。您可以发布
Model.Token
?数据层的代码吗。该组合只是一个EF4(实体)
Part 1
Car Part 1.1
Part 1
Car Part 1.2
Part 2
Car Part 2.1
-------
Part 1
Car Part 1.1
Part 1
Car Part 1.2
Part 2
Car Part 2.1