سلام.
از پکیج MvcDynamicForms استفاده کنید. در یک پروژه برای فرم های داینامیک از از این استفاده کردم.

در اون پروژه، ستون ها رو در قالب یک سری آبجکت JSON در دیتابیس ذخیره می کردم و موقع لود شدن فرم مربوطه برای ایجاد رکورد و ویرایش اونها از همین پکیج استفاده می کردم. ردیف ها هم مجددا بصورت آبجکت های JSON در ردریف های جدول مربوطه در دیتابیس ثبت می شد. برای جستجو هم از قابلیت سرچ JSON در SQL Server می توانید استفاده کنید، و هم از LINQ استفاده کرده و رکوردها رو پس از لود کردن در یک لیست و Deserilize کردن اونها سرچ کنید (روش دوم برای تعداد ردیف های کم خوبه).