- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以找到 运行时 已用 映射的类/组件的列名FluentNHibernate 在应用了所有约定之后。
例如,给定简单模型:
public class Address{
public string Street {get; set;}
public string Zip {get; set;}
}
public class AddressMap : ComponentMap<Address>{
Map( x => x.Street );
Map( x => x.Zip );
}
public class PersonMap : ClassMap<Person>
{
public PersonMap(){
Id( x => x.Id );
Map( x=> x.Ssn );
Map( x=> x.Name );
Component( x => x.Address )
.ColumnPrefix("ADDRESS_");
}
}
public class ClassConvention : IClassConvention
{
public void Apply( IClassInstance instance )
{
instance.Table( "tbl" + instance.EntityType.Name );
}
}
tblPerson
Id Name Ssn ADDRESS_Street ADDRESS_Zip
-----------------------------------------------------------
1 Brian 11223344 123 Example St. 12345
var mappings = FluentNHibaernate.CompileMergeAndBuildAllMappings();
var zipCodeColumnName = mappings.FindMappedType<Address>().ColumnName(a => a.Zip)
zipCodeColumnName.ShouldBe("ADDRESS_Zip");
// Here I'm interested in the run-time & final column name with the
// prefix applied from the PersonMap class.
var personTableName = mappings.FindMappedType<Person>().TableName;
personTableName.ShouldBe("tblPerson");
// I'm interested in the final table name after the ClassConvention
// modified the table name.
最佳答案
[Test]
public void test4()
{
var ssnColumn = RuntimeNames
.ColumnName<Person>( x => x.Ssn );
ssnColumn.ShouldEqual( "Ssn" );
var addressColumn = RuntimeNames
.ColumnName<Person>( x => x.Address.Street );
addressColumn.ShouldEqual( "ADDRESS_Street" );
var personTableName = RuntimeNames
.TableName<Person>();
personTableName.ShouldEqual( "tblPerson" );
}
public static class RuntimeNames
{
private static Configuration cfg = Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005 )
.Mappings( m => m.FluentMappings
.AddFromAssemblyOf<PersonMap>()
.Conventions
.AddFromAssemblyOf<PersonMap>()
).BuildConfiguration();
public static string ColumnName<T>( Expression<Func<T, object>> property )
where T : class, new()
{
var accessor = FluentNHibernate.Utils.Reflection
.ReflectionHelper.GetAccessor( property );
var names = accessor.Name.Split('.');
var classMapping = cfg.GetClassMapping( typeof( T ) );
return WalkPropertyChain( classMapping.GetProperty(names.First()), 0, names );
}
private static string WalkPropertyChain(Property property, int index, string[] names)
{
if( property.IsComposite )
return WalkPropertyChain( ((Component)property.Value).GetProperty( names[++index] ), index, names );
return property.ColumnIterator.First().Text;
}
public static string TableName<T>() where T : class, new()
{
return cfg.GetClassMapping( typeof(T) )
.Table.Name;
}
}
关于fluent-nhibernate - FluentNHibernate : Getting Column & Table Names After Mapping Conventions Are Applied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460522/
来自函数和方法参数的 PEP 8 部分: Always use self for the first argument to instance methods. Always use cls for
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
如标题所述,驼峰式大小写(即:theQuickBrownFox)如何在其中一个单词以小写字母开头后跟大写字母(如 iPhone 中的情况)时工作。 getiPhoneNumber() 例如看起来很奇怪
我正在寻找线程安全函数的命名约定,这意味着可以从多个线程安全地调用函数。但假设我使用: void FooThreadSafe(); 在您看来,您是否认为: 此函数将使用锁定机制,并发调用是否安全? 或
我正在查看来自多个开发人员的具有多种命名约定的代码 - 一种真正的享受。其中包括匈牙利语(“s_year”、“s_day”)以及其他风格(“yearS”、“dayS”)。 有谁知道这种风格叫什么?对于
function getPerformActionFunction(someParameter) { return function() { performAction(som
我正在做一个项目,遇到了以下命名问题。 我想实现工厂模式,但我不知道要使用的最佳类命名(我正在从一个更改为另一个,这非常耗时:S)。 我通常使用命名空间来分隔类组,但我的问题在于这段特定的代码: cl
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
我想知道是否有任何甜蜜的语言为“英尺”与“英寸”或“厘米”等提供某种抽象。我正在考虑在 Java 中执行以下操作: u(56).feet() + u(26).inches() 并且能够得到类似的东西
最近,我一直在阅读Code Complete,这是基于这里的许多引用以及一位 friend 的引用,并且对社区有一个命名问题。应该在确定事件是否成功的 bool 方法上使用前缀"is"吗?这是我尝试过
当项目的名称已经是复数时,你如何命名你的数组? array names 是有道理的。array collisionDatas 没那么多。 最佳答案 我几乎总是将它命名为Item name + s。命名
我正在查看代码并在函数和方法名称的开头看到 %。例如 defun %rod 和 defmethod %do-query。是否有使用这种命名方案的标准约定? 最佳答案 来自few places : %f
您对应用程序域模型类和表示层类使用的命名约定是什么?后缀/前缀来区分类的目标和第一眼: 例如,从 DAL 返回的有关人员的信息可以是 public class PersonEntity { pub
我正在为 Assemble v0.6.0 创建一个 nunjucks 插件.它似乎正在使用 Template (我认为它以前被称为 Engine ),它也支持 Verb . 我应该调用插件“engin
对于某些对象将存在于两个版本中的情况,我需要提出一个命名方案。假设服务器端有 File 和 Directory 对象,它将这些对象的轻量级版本传递给客户端。 LightweightFile 和 Lig
好的,因此您可以阅读有关标识符命名的准则,“直到您脸色发青…… Camel 案,帕斯卡案,使它们具有描述性……”但它们实际上并不能帮助您为给定名称选择最佳名称应用程序域。 最容易选择的(IMHO)是一
我见过“The Coolest Server Names”,我还见过另一个 smaller-ish question与我的有关,不幸的是,它已关闭。 不过,这是一个严肃的问题,因为我在一个内部应用程序
问题是关于命名变量或标识符的正确方法,这些标识符将两个或多个“事物”的集合分组。让我用例子和问题进一步解释一下...... 如果你拥有一个 id,你可以用标识符“id”来命名它 如果你有一个包含约会的
作为一名初学者/中级开发人员,我遇到了一个问题,因为我的项目越来越大,越来越抽象,因为我使用了更多的 OOP 原则,我在命名事物时遇到了问题。就像当我有多个项目或类库时,我不知道如何命名它们。我看到了
我正在实现一个新的Web服务,并且在我尚未使用CQRS的同时,我想创建我的服务,以便将来可以轻松地将其移至CQRS。因此,我想知道DTO类和方法的命名约定。 我已经阅读了有关DTO命名约定的blog
我是一名优秀的程序员,十分优秀!