所有项目的默认输出路径为Visual Studio是bin/Debug
的,但我注意到,obj
文件夹也产生再次包含dll
和pdb
文件.有人能告诉我为什么这个文件夹生成了?
我正在构建一个动态生成sql的应用程序来搜索特定表的行(这是主域类,如Employee).
Table1,Table2和Table1Table2Map有三个表.Table1与Table2有多对多的关系,并通过Table1Table2Map表进行映射.但由于Table1是我的主要表格,因此这种关系几乎就像一对一.
我的应用程序生成一个sql,它基本上给出了一个包含所有这些表中的行的结果集.select子句和连接不会更改,而where子句是基于用户交互生成的.在任何情况下,我都不希望在我的结果集中重复使用Table1,因为它是结果显示的主表.现在,生成的查询是这样的:
select distinct Table1.Id as Id, Table1.Name, Table2.Description from Table1
left outer join Table1Table2Map on (Table1Table2Map.Table1Id = Table1.Id)
left outer join Table2 on (Table2.Id = Table1Table2Map.Table2Id)
Run Code Online (Sandbox Code Playgroud)
为简单起见,我排除了where子句.问题是Table2中Table1中有多行,即使我已经说明了Table1的不同.Id结果集有重复的Table1行,因为它必须选择Table2中的所有匹配行.
为了详细说明,请考虑对于Table1中Id = 1的行,Table1Table2Map(1,1)和(1,2)中有两行将Table1映射到Table2中的两行,其中ID为1,2.上述查询返回这种情况下重复的行.现在我希望查询只返回Id 1一次的Table1行.这是因为Table2中只有一行类似于Table1中相应条目的活动值(此信息在Mapping表中).有没有办法可以避免获取Table1的重复行.
我认为我试图解决问题的方式存在一些基本问题,但我无法弄清楚它是什么.提前致谢.
我必须映射两个具有外键关系的简单表.其中一个表是包含列id(类型为int的主键),名称,地址和guid(新添加且不是主键)的Contact.另一种是phone__number含有列ID(int类型的主键),contact___id(在接触表ID的外键)和phone__number.
Contact表的映射文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="OfflineDbSyncWithNHibernate" default-lazy="true" namespace="OfflineDbSyncWithNHibernate.Models">
<class name="Contact" table="Contact">
<id name="Id" column="Id" type="int">
<generator class="native" />
</id>
<property name="Name" column="name" type="string"/>
<property name="Address" column="address" type="string"/>
<property name="Guid" column="guid" type="string"/>
<set lazy="true" batch-size="6" table="phone_number" name="PhoneNumbers" fetch="join" inverse="false" cascade="all" >
<key foreign-key="FK_contact_phone_number" column="contact_id"/>
<one-to-many class="PhoneNumber" />
</set>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
Phone_number表的映射文件是:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="OfflineDbSyncWithNHibernate" default-lazy="true" namespace="OfflineDbSyncWithNHibernate.Models"> …
Run Code Online (Sandbox Code Playgroud) .net ×6
c# ×3
nhibernate ×2
database ×1
legacy ×1
linq-to-sql ×1
ms-access ×1
nunit ×1
one-to-many ×1
orm ×1
selenium ×1
sql ×1
sql-server ×1
testing ×1
wcf ×1