/ / Błąd encji w jsonie MVC - Wykryto cykliczne odwołanie podczas serializacji obiektu typu - json, framework-encja, tabela bootstrap

Błąd jednostki do jsona MVC - Wykryto odniesienie cykliczne podczas serializacji obiektu typu - json, entity-framework, bootstrap-table

Moja aplikacja mvc korzysta z tabeli ładowania początkowego.

Mój model to moja tabela bazy danych tSSTCodes, do której można uzyskać dostęp za pomocą Entity Framework

@ModelType IEnumerable(Of SupportDiary.tSSTCode)

Użyłem tej samej metody dla innych tabel i wszystkie one działają (tabela jest generowana), ale ten widok zwraca błąd:

A circular reference was detected while serializing an object of type "System.Data.Entity.DynamicProxies.tSSTCode_8DE9547CF85FA0D8C54E713F4E2A7A2104EC7CB828A4B0F29604CE8AE871F8A3".

Linia, na której się zrywa, to ....

var tdata = @Html.Raw(Json.Encode(Model));

Model to prosty stół. To jest sql, aby go utworzyć;

CREATE TABLE [dbo].[tSSTCodes](
[sstID] [int] IDENTITY(1,1) NOT NULL,
[sRU] [nvarchar](10) NOT NULL,
[sProjectCode] [nvarchar](10) NOT NULL,
[sProjectName] [nvarchar](50) NOT NULL,
[sTaskNo] [nvarchar](10) NOT NULL,
[sTaskName] [nvarchar](50) NOT NULL,
[sRedundant] [bit] NOT NULL CONSTRAINT [DF_tSSTCodes_sRedundant]  DEFAULT ((0)),
CONSTRAINT [PK_tSSTCodes] PRIMARY KEY CLUSTERED
(
[sstID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Mój kod tabeli ładowania początkowego to

<table id="table"
data-classes="table table-hover table-condensed"
data-striped="true"
data-toolbar="#toolbar"
data-pagination="true"
data-click-to-select="true"
data-search="true"
data-show-export="true"
data-show-pagination-switch="true"
data-show-toggle="true"
data-show-columns="true" >
<thead>
<tr>
<th data-field="sstID" data-formatter="btnViewFormatter">ID</th>
<th data-field="sRU" >R/U</th>
<th data-field="sProjectCode" >Project Code</th>
<th data-field="sProjectName" >Project Name</th>
<th data-field="sTaskNo" >Task No</th>
<th data-field="sTaskName" >Task Name</th>
<th data-field="sRedundant" data-formatter="trueFalseFormatter" >Redundant</th>
</tr>
</thead>
</table>

A powiązane skrypty to:

<script type="text/javascript">

var tdata = @Html.Raw(Json.Encode(Model));

console.log(tdata);

var $table = $("#table");

function btnViewFormatter(value) {
return "<a class="btn btn-default btn-sm" href="@Url.Content("~/SSTCodes/Edit?id=")" + value + "" >" + value + "</a>";
}

function trueFalseFormatter(value) {
if (value == true){
return "<span class="glyphicon glyphicon-check"></span>";
} else {
return "<span class="glyphicon glyphicon-unchecked"></span>";
}
}

function getSelectedRow() {
var index = $table.find("tr.success").data("index");
return $table.bootstrapTable("getData")[index];
}

$(function () {

$table.bootstrapTable({
data: tdata,
fixedColumns:    true,
fixedNumber: 1,
exportDataType:"all",
exportTypes:["csv", "txt", "excel"]
});

$table.on("click-row.bs.table", function (e, row, $element) {
$(".success").removeClass("success");
$($element).addClass("success");
});

$table.on("dbl-click-row.bs.table", function (e, row, $element) {
var url = "@Url.Content("~/SSTCodes/Edit?id=")" + getSelectedRow().sstID;
window.navigate(url);
})

});

Nie mogę zrozumieć, co powoduje cykliczne odwołanie ... Próbując debugować, próbowałem console.log(tdata); umieszczone za linią obrażeń, ale oczywiście nie za daleko ... próbowałem console.log(@Html.Raw(Json.Encode(Model))); i otrzymałem ten sam błąd w wierszu console.log.

AKTUALIZACJA Linki do możliwego duplikatu innego pytanianie są pomocne. Mój kod opierał się na generowaniu nowego kontrolera MVC przy użyciu szablonu kreatora ADO Entity Frameworks. To rusztowało serię widoków CRUD. Wszystko, co wtedy zrobiłem, to zastąpiłem tabelę html a dla każdego kodu pozycji pomocnikiem tabeli bootstrap. Zrobiłem to z kilkoma kontrolerami i wszystkie one działają.

Każda pomoc doceniona.

Odpowiedzi:

0 dla odpowiedzi № 1

Wygląda na to, że Entity Frameworks mogą mieć problemy z rusztowaniem, w które zaangażowane są relacje. W przypadku tej tabeli musiałem stworzyć własne widoki i kod.