我正在使用Simon Hughes的反向POCO生成器来生成我的域实体。
我有一个ProcedureLogbook
表,其中外键回到Procedure
表。没什么特别的。只是直接参考回到Pk - m:1。我还与Procedure
表有第二关系。第二个关系让我没有悲伤,并按预期命名导航属性,即ReportingProcedure(FK称为FK_ProcedureLogbookType_ReportingProcedure
)。
对于其他关系(主要关系),POCO生成器在名为ProcedureLogbook
的{{1}}类中创建导航属性,而不仅仅是Procedure_ProcedureId
。 FK称为Procedure
。
代码如下所示:
FK_ProcedureLogbookType_Procedure
我试图通过将以下代码放在/// <summary>
/// Parent Procedure pointed by [ProcedureLogbookType].([ProcedureId]) (FK_ProcedureLogbookType_Procedure)
/// </summary>
public virtual Procedure Procedure1 { get; set; } // FK_ProcedureLogbookType_Procedure
/// <summary>
/// Parent Procedure pointed by [ProcedureLogbookType].([ReportingProcedureId]) (FK_ProcedureLogbookType_ReportingProcedure)
/// </summary>
public virtual Procedure ReportingProcedure { get; set; } // FK_ProcedureLogbookType_ReportingProcedure
闭包中来强制其手:
ForeignKeyNames
这给了我一个名为if (foreignKey.ConstraintName.Equals("FK_ProcedureLogbookType_Procedure"))
{
if (foreignKey.FkTableName.Equals("ProcedureLogbookType"))
{
return "Procedure";
}
}
的导航财产
知道问题是什么吗?我希望能够使用如下代码:
Procedure1
注意:我也尝试过以下代码,因为我注意到关系另一端的NavigationProperty也为它添加了“1”后缀:
procedureLogbook.Procedure == etc
仍然没有结果。如何摆脱“1”后缀?
除此之外,在我的Procedure实体中,没有为其中一个导航属性(上面引用的if (foreignKey.ConstraintName == "FK_ProcedureLogbookType_Procedure")
{
if(relationship == Relationship.OneToMany)
return "ProcedureLogbookTypes";
return "Procedure";
}
)确定复数。它创建了以下内容:
ReportingProcedure
作为一个集合,它应该是复数。
(Cross在Pluralsight论坛上发布了Code-first Entity Framework with Legacy Databases)
答案 0 :(得分:0)
在EF.Reverse.POCO.Core.ttinclude中,你可以更新Attempt 5的逻辑(v2.36.1中的第3622行),这样它就不会在循环的第一次迭代中添加后缀
public class NonSmoothViewPager extends ViewPager {
private boolean mIsEnabledSwipe = true;
public NonSmoothViewPager(Context context) {
super(context);
}
public NonSmoothViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setEnabledSwipe(boolean isEnabledSwipe) {
mIsEnabledSwipe = isEnabledSwipe;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mIsEnabledSwipe && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mIsEnabledSwipe && super.onInterceptTouchEvent(event);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item, false);
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, false);
}
}