Asp.net MS SQL预览的列比需要的多

Asp.net MS SQL预览的列比需要的多,asp.net,sql-server,exception,dataset,constraints,Asp.net,Sql Server,Exception,Dataset,Constraints,我在WebControlling.xsd中定义了表Foo、Bar和footbar FooToBar中的适配器方法GetAllFoos必须从Foo返回所有Name、Country和Year 另一个GetAllUnboundBars从Bar返回Name和Year,其中Bar.ID不在FooToBar 对于FooToBar中的GetAllFoos,我写道: SELECT ID AS FooID, FooName, FooCountry, FooYear FROM Foo 当我使用

我在
WebControlling.xsd
中定义了表
Foo
Bar
footbar
FooToBar
中的适配器方法
GetAllFoos
必须从
Foo
返回所有
Name
Country
Year

另一个
GetAllUnboundBars
Bar
返回
Name
Year
,其中
Bar.ID
不在
FooToBar


对于
FooToBar
中的
GetAllFoos
,我写道:

SELECT   ID AS FooID, FooName, FooCountry, FooYear
FROM         Foo
当我使用预览工具时,它还会显示
FooToBar
中的值

| {some-id-Foo} | John Doe | US | 1988 | -empty FooToBar ID- | -empty Bar FK- |
我遇到的问题是,我在
Adapter.GetAllFoos()的
FooToBar.cs
中遇到了一个错误:

System.Data.ConstraintException:'未能启用约束。一行或多行包含违反非空、唯一或外键约束的值。'

尽管我从未要求过,但这是正确的
FooToBarID
BarID
不能为空。
为什么适配器仍然发送它们?我怎样才能控制它?

预览工具: 适配器代码:

/// <summary>
/// Returns all available ProjectsOverall
/// </summary>
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public WebControlling.ProjectsOverallToProjectsDataTable GetAvailableProjects()
{
    return Adapter.GetAvailableProjects();
}

编辑:在
querybuilder
中执行查询时,它只显示我想要的5列,而不是7列。

什么预览工具?我想你必须发布你的适配器代码。@TabAlleman-预览工具:右键单击dataset designer中的任意位置,查看上下文菜单项<代码>预览数据…
。非常确定它设计为包含所有列。我刚刚创建了一个新的查询,没有包含所有的列,首先我得到了一个警告,我的查询与表的架构不匹配,然后我使用该工具进行了测试,所有的列都出现了(比我使用的多了5列)。我不认为它是一个真正的测试工具,只是一个快速查看工具。要么您的数据确实有问题,要么您可能无法使用预览工具(在这种情况下(?)和您的约束条件)。@wazz您提供了实际答案。
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
        public virtual WebControlling.ProjectsOverallToProjectsDataTable GetAvailableProjects() {
            this.Adapter.SelectCommand = this.CommandCollection[1];
            WebControlling.ProjectsOverallToProjectsDataTable dataTable = new WebControlling.ProjectsOverallToProjectsDataTable();
            this.Adapter.Fill(dataTable);
            return dataTable;
        }