使用ViewModel数据库优先方法在数据库中保存表

时间:2015-08-04 11:28:28

标签: c# asp.net-mvc vb.net

我有一个MVC应用程序来更新数据库中的表,但现在我需要添加一个ViewModel,以便我可以在视图页面上显示多个表。但现在的问题是它现在不会保存到数据库中。我使用数据库第一种方法(不是代码优先)。

这是我到目前为止所做的:

在我的ViewModel中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_black_transparent_90"    
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="26dp"
        android:layout_marginTop="18dp"
        android:text="@string/FOLDERS"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@android:color/darker_gray" />

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textView1"
        android:layout_marginRight="39dp"
        android:visibility="gone" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/ic_red_edit" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imageView1"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text="EDIT"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/darker_gray"
            android:textSize="16dp" />
    </RelativeLayout>

    <GridView
        android:id="@+id/gridEditView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ddd"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="3dp"
        android:background="@android:color/transparent"        
        android:horizontalSpacing="1dp"
        android:numColumns="2"
        android:verticalSpacing="1dp" >
    </GridView>

    <RelativeLayout
        android:id="@+id/ddd"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" >

        <Button
            android:id="@+id/button6"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginBottom="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginTop="4dp"
            android:background="@drawable/ic_red_cancel_47"
            android:gravity="center"
            android:visibility="visible" />

        <Button
            android:id="@+id/btnAddActivity"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginBottom="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="4dp"
            android:background="@drawable/ic_red_ok_47" />
    </RelativeLayout>

</RelativeLayout>

在视图中:

Public Class ClientUserProjectIssue
    Public Property uTable As UserTable
    Public Property issueType As IssueTypeTable
    Public Property IssueTable As IssueTable
End Class

在我的控制器中:

@ModelType IssueTracker.ClientUserProjectIssue

@Html.EditorFor(Function(model) model.IssueTable.IssueSummary)
@Html.EditorFor(Function(model) model.IssueTable.IssueDescription)

我现在将得到一个空值,因为我使用的是ViewModel而不是单个表。

我试图实现这样的事情:

Public Function UpdateIssue(issue As IssueTracker.ClientUserProjectIssue, objModelMail As IssueTable, command As String) As ActionResult

dbServer.Entry(issue).State = EntityState.Modified
dbServer.SaveChanges()

但我收到错误,所以我很确定我不能这样做,因为我首先使用数据库,如何实现viewModel以便我可以在数据库中保存表?

1 个答案:

答案 0 :(得分:1)

您正在将ViewModel传递给DbContext.Entry方法。

而不是传递ViewModel, 你应该传递ViewModel的属性。

200