3

...まったく機能しません。私はフリックンのもののすべての異なる組み合わせで何日も試しましたが、それは動揺しません.

確かに、「拡張された EF クラスのパブリック プロパティを次の方法で表示できることは誰もが知っていることです」や「もしデータモデルを拡張して計算フィールドを表示したいのですが、単純に...」 - 私にとってはそれほど単純ではありません - うーん!!!

したがって、すべての典型的な例に従って、私の EF 部分クラスは次のようになります。

[DisplayColumn("Name")]
[MetadataType(typeof(SaleProduct_Metadata))]
public partial class SaleProduct
{        
    public string Test
    {
        get
        {
            return "blah";
        }
    }

    public class SaleProduct_Metadata
    {
        [ScaffoldColumn(true)] 
        public string Test;
    }
}  

私の global.asax は次のようになります。

        MetaModel model = new MetaModel();
        model.RegisterContext(typeof(Sale.Models.SaleEntities), new ContextConfiguration() { ScaffoldAllTables = true });
        routes.Add(new DynamicDataRoute("DD/{table}/{action}.aspx")
        {
            Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
            Model = model
        });

そして、私の List.aspx.cs は次のようになります。

public partial class List : System.Web.UI.Page
{
    protected MetaTable table;

    protected void Page_Init(object sender, EventArgs e)
    {
        //DynamicDataManager1.RegisterControl(GridView1, true /*setSelectionFromUrl*/);
        table = GridDataSource.GetTable();
        DynamicDataManager1.RegisterControl(GridView1, true /*setSelectionFromUrl*/);
        GridView1.ColumnsGenerator = new AdvancedFieldGenerator(table, true);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        table = GridDataSource.GetTable();
        Title = table.DisplayName;
        GridDataSource.Include = table.ForeignKeyColumnsNames;
        InsertHyperLink.NavigateUrl = table.GetActionPath(PageAction.Insert);

        // Disable various options if the table is readonly
        if (table.IsReadOnly)
        {
            GridView1.Columns[0].Visible = false;
            InsertHyperLink.Visible = false;
        }
    }

    protected void OnFilterSelectedIndexChanged(object sender, EventArgs e)
    {
        GridView1.PageIndex = 0;
    }
}

...Dynamic Data Futures のバージョンを使用して、列の順序付け、より優れた検証などの機能を取得していますが、正常に動作しています。(例) List.aspx.cs (上に表示) にいくつかの調整を加え、日付の書式を変更して、NZ スタイルの日付が米国の Web サーバーで機能するようにしました。それ以外は、すべてかなり標準的です。

私の EF モデルは別のアセンブリに格納されており、(明らかに) 部分クラスを使用して一部のエンティティを拡張しています。計算された血まみれのフィールドを 2 つ表示したいだけですが、まったく成功していません。レンガの壁に頭をぶつけている新しいプログラマーのように感じます。古いトリックはどれも機能しません。プログラミングはそれほど難しくないはずです :-(

どなたか、どなたか、助けてください!!

バーナード。

4

2 に答える 2

2

よくわかりませんが、EF 3.5 SP1 を使用している場合は...

それはあなたのクラスがから派生することを意味しますEntityObject.Dynamic Dataはこの状況を特別にケース化し、TypeDescriptionProviderからEFメタデータを取得する方法を知っているカスタムを使用しObjectContext、必要な属性を偽造する.

EF が認識しているプロパティのメタデータのみを使用している可能性があるため、これが問題の原因である可能性があります。TypeDescriptionProviderもちろん、計算されたプロパティは除外されます。

これが「答え」ではないことはわかっていますが、うまくいけば、正しい方向に向けることができます。

アレックス

于 2009-07-25T03:07:25.333 に答える
0

EF を使用する場合、部分クラスの名前空間は、生成された部分クラスの名前空間と一致する必要があります。Linq-2-SQL バージョンでは、生成された部分クラスには名前空間がないため、そのまま機能します。 http://forums.asp.net/t/1473192.aspx

于 2009-09-23T15:56:02.277 に答える